
正常的情况我们可以通过redux来更新状态,
嗯 没任何问题的
但是大家会发现

react-navigation 下面的路由已经脱离了redux管理了,为啥呢,因为react-navigation 跟路由的render方法并没有在redux改变之后执行
还有一些react-navigation-定义的几个tab页面也是,重复进入的时候没有,再次执行render函数,又不可能设置每次进去的时候 就去获取接口吧
然后借助DeviceEventEmitter
import {
DeviceEventEmitter
} from 'react-native';
// 在第一个需要切换的tab页
DeviceEventEmitter.emit('changeRender', 'changeRender'); // 更新其他的render方法
// 然后在定义react-navigation 跟路径的时候
componentDidMount() {
//更新所有的路由操作
this.changeRender = DeviceEventEmitter.addListener('changeRender', (a) => {
this.render() // 刷新整个路由
})
}
// 卸载组件的时候
componentWillUnmount() {
this.changeRender.remove();
}
网友评论