问题描述
在PullList列表中,需要点击列表的某一行,进入列表的详细信息。然后修改列表的信息后,返回主List中。但是今天遇到个坑,就是修改完详细信息后。主界面没有同步刷新。看网上参考了很多帖子,都没有解决。
参考1:没解决,但是帖子说的很有道理,但是在我这里不适用。可以一读,防止以后绕类似的坑。
https://www.jianshu.com/p/d762b319cd60
参考2:其实和上面道理一样,同样没解决。
https://www.jianshu.com/p/b317fb9b6770
我自己环境:
react-native 0.57
redux
PullList
大致流程:
但是redux内的数据已经改变成功了,只不过是界面没有渲染。原因也没有找到。。。坑啊。。。
然后换了另一个办法,就是用到了通知DeviceEventEmitter
Detail详情界面内,点击保存按钮
//这个方法是更新redux,更新内容是可以的,但是没有渲染。因此数据已经是最新的了。
this.updateDispatchDataStatus(json)
//重点来了,这里给List界面发送个通知,告诉界面,我刷新redux了,你要更新渲染数据。
DeviceEventEmitter.emit('left', '发送了个通知');
List界面内
用PullList,state内定义了:
list: (new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2
})).cloneWithRows(this.props.dispatchDataSource),
componentDidMount() {
//添加监听
this.deEmitter = DeviceEventEmitter.addListener('left', (a) => {
console.info(this.props.dispatchDataSource)
this.setState({
this.setState({
//收到通知然后更新list,就重新渲染了。
list: this.state.list.cloneWithRows(this.props.dispatchDataSource),
});
});
});
}
总结
还是没有本质的解决问题,但是这样也达到了目的。有时间再仔细看看吧。
我的QQ337241905,如果有细节不了解可以加我。