React-Native中Redux结合PullList时遇到List没有及时刷新问题2018-11-1

问题描述

在PullList列表中,需要点击列表的某一行,进入列表的详细信息。然后修改列表的信息后,返回主List中。但是今天遇到个坑,就是修改完详细信息后。主界面没有同步刷新。看网上参考了很多帖子,都没有解决。

参考1:没解决,但是帖子说的很有道理,但是在我这里不适用。可以一读,防止以后绕类似的坑。
https://www.jianshu.com/p/d762b319cd60

参考2:其实和上面道理一样,同样没解决。
https://www.jianshu.com/p/b317fb9b6770

我自己环境:

react-native 0.57
redux
PullList

大致流程:


image.png

但是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,如果有细节不了解可以加我。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,008评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,859评论 2 59
  • (评论员 黎澄皓)媒介,让人喜,让人忧 媒介,是运输物质或传播信息的途径,但随着社会的发展,科技的进步,媒介的...
    高惠娟阅读 339评论 0 0
  • 1、习惯+运动+学习 1)生活习惯:早6:00前晚23:30,早起完成5天,早睡完成5天,比上周略有进步。 2)运...
    婷兰0726阅读 183评论 0 0
  • 感恩大爱的宝红老师,昨天听了宝宏老师的微信分享,收获很多。听宝宏老师的声音就很舒服,听她分享的故事更是深入人心,也...
    武丹yoyo阅读 152评论 0 0