老师你好,想问一下详情页返回同步更新收藏状态的问题
来源:7-6 为Popular(最热)与Trending(趋势)模块的详情页添加收藏的功能
mylovef
2017-06-08
这里更新状态的原理,我的理解是详情页把更新状态写入数据库,上级页面根据数据库的变化把最新状态渲染要页面上
但是,RN路由pop是不会触发刷新的,我的理解就是有重新读取数据库并渲染页面这个步骤,根据我的理解一般需要在push路由的时候加入callback为params或者像后面的章节用的emit-addlistener
那么这里点击返回时怎么做到状态同步刷新的呢?是不是我的理解有偏差?希望老师能给予解答,谢谢
写回答
1回答
-
你的理解是正确的,在课程中完成同步刷新是通过以下两种方式:
第一种方式:
通常情况从详情页面返回到上一页,上一个页面的componentWillReceiveProps(nextProps)会被回调,在这个方法中可以做同步刷新的操作:
componentWillReceiveProps(nextProps) { if (this.isFavoriteChanged) { this.isFavoriteChanged = false; this.getFavoriteKeys(); }else if(nextProps.theme!==this.state.theme){ this.updateState({theme:nextProps.theme}) this.flushFavoriteState(); } }
第二种方式:如果返回上一个页面,上一个页面的componentWillReceiveProps(nextProps) 没被回调的话,可以在详情页面回调上一个页面的方法完成同步刷新:如下:
componentWillUnmount() { this.backPress.componentWillUnmount(); if (this.props.onUpdateFavorite)this.props.onUpdateFavorite(); }
252017-08-15
相似问题