如何将React Native ListView与MobX一起使用?

如何将React Native ListView与MobX一起使用?,listview,react-native,mobx,Listview,React Native,Mobx,我试图用MobX的可观察数组填充react native中的ListView,如下所示: constructor(props) { super(props) var dataSource = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); let dogs = props.store.dogs; this.state = { dogs: do

我试图用MobX的可观察数组填充react native中的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}
            />
    }
构造函数(道具){
超级(道具)
var dataSource=newlistview.dataSource({rowHasChanged:(r1,r2)=>r1!==r2});
让狗=道具。商店。狗;
this.state={dogs:dogs,dataSource:dataSource};
}
render(){
var dogs=this.state.dogs;
var dataSource=this.state.dataSource.cloneWithRows(dogs);
返回
}
但是在运行代码时,永远不会调用renderRow()。好像cloneWithRows()方法不知道如何克隆行一样

有人成功地做到了这一点吗? (并使其表现为当狗列表中的狗的名字改变时,列表中的单元格将重新呈现)

更新:
这里有更多信息

如果我没记错的话,你需要对狗进行切片(lol)
dogs.slice()
,否则ListView将无法识别它是正确的数组。在这种情况下,
renderRow
呈现的组件可能也需要是观察者组件,因为它可以异步调用

请注意,切片应在
render
方法中完成,而不是在构造函数中完成;您希望它在每次集合更改时发生,而不仅仅是在构建组件时

另见: