请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师你好,想问一下详情页返回同步更新收藏状态的问题

这里更新状态的原理,我的理解是详情页把更新状态写入数据库,上级页面根据数据库的变化把最新状态渲染要页面上

但是,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();
}


2 回复 有任何疑惑可以回复我~
  • 提问者 mylovef #1
    谢谢老师如此详细的回答,也就是说,路由pop回退的时候,虽然不会对上级页面刷新,但还是能进入钩子函数?
    回复 有任何疑惑可以回复我~ 2017-06-09 09:59:00
  • 提问者 mylovef #2
    额。我理解了
    回复 有任何疑惑可以回复我~ 2017-06-09 10:08:24
  • 提问者 mylovef #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-06-09 10:08:27
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信