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

来源:7-6 为Popular(最热)与Trending(趋势)模块的详情页添加收藏的功能

mylovef

2017-06-08

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

但是,RN路由pop是不会触发刷新的,我的理解就是有重新读取数据库并渲染页面这个步骤,根据我的理解一般需要在push路由的时候加入callback为params或者像后面的章节用的emit-addlistener

那么这里点击返回时怎么做到状态同步刷新的呢?是不是我的理解有偏差?希望老师能给予解答,谢谢

写回答

1回答

CrazyCodeBoy

2017-06-09

你的理解是正确的,在课程中完成同步刷新是通过以下两种方式:

第一种方式:

通常情况从详情页面返回到上一页,上一个页面的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
5
学无止境乎
还有中方法是通过DeviceEventEmitter定义通知也可以实现刷新
2017-08-15
共5条回复

React Native技术精讲与高质量上线App开发

一个真实的上线项目,一次完整的开发过程,全面掌握React Native技术

1577 学习 · 727 问题

查看课程