采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这里更新状态的原理,我的理解是详情页把更新状态写入数据库,上级页面根据数据库的变化把最新状态渲染要页面上
但是,RN路由pop是不会触发刷新的,我的理解就是有重新读取数据库并渲染页面这个步骤,根据我的理解一般需要在push路由的时候加入callback为params或者像后面的章节用的emit-addlistener
那么这里点击返回时怎么做到状态同步刷新的呢?是不是我的理解有偏差?希望老师能给予解答,谢谢
你的理解是正确的,在课程中完成同步刷新是通过以下两种方式:
第一种方式:
通常情况从详情页面返回到上一页,上一个页面的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(); }
谢谢老师如此详细的回答,也就是说,路由pop回退的时候,虽然不会对上级页面刷新,但还是能进入钩子函数?
额。我理解了
非常感谢!
登录后可查看更多问答,登录/注册
一个真实的上线项目,一次完整的开发过程,全面掌握React Native技术
4.5k 12
1.1k 9
1.5k 8
1.3k 7