如何将React Native ListView与MobX一起使用?
我试图用MobX的可观察数组填充react native中的ListView,如下所示:如何将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
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
方法中完成,而不是在构造函数中完成;您希望它在每次集合更改时发生,而不仅仅是在构建组件时
另见: