【问题标题】:How to use React Native ListView with MobX?如何在 MobX 中使用 React Native ListView?
【发布时间】:2016-12-28 09:33:54
【问题描述】:

我正在尝试使用 MobX 的可观察数组填充 ListView 以响应本机,如下所示:

constructor(props) {
        super(props)
        var dataSource = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
        let dogs = props.store.dogs;
        this.state = { dogs: dogs, dataSource: dataSource };
    }

    render() {

        var dogs = this.state.dogs;
        var dataSource = this.state.dataSource.cloneWithRows(dogs);

        return <ListView
            dataSource={dataSource}
            renderRow={this.renderRow}
            />
    }

但是在运行代码时,renderRow() 永远不会被调用。就像 cloneWithRows() 方法不知道如何克隆行一样。

有没有人成功做到这一点? (并且还让它表现出当狗列表中的狗的名字发生变化时,列表中的单元格将重新渲染)

更新: 更多信息在这里https://github.com/mobxjs/mobx/issues/476

【问题讨论】:

    标签: listview react-native mobx


    【解决方案1】:

    如果我没记错的话,您需要对狗进行切片(哈哈)dogs.slice(),否则 ListView 不会将其识别为正确的数组。 renderRow 渲染的组件可能也需要是一个观察者组件,因为它可以被异步调用。

    注意切片应该在render方法中完成,而不是在构造函数中;您希望每次集合更改时都会发生这种情况,而不仅仅是在构造组件时。

    另请参阅:https://github.com/mobxjs/mobx/issues/476

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2021-06-14
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      相关资源
      最近更新 更多