react-navigation 如何刷新返回并且完全刷新上一个页面



  • react-navigation 依次打开了a,b,c 3个页面,这个时候我要从c返回b, b是一个TabNavigator,在实际测试中,改变b页面的state,引起b页面render,但是TabNavigator并没有完全刷新,(TabNavigator选项页面都是flatlist,有滚动距离)

    想实现的效果是b在返回前再次实例化一个新的b页面,完全替换之前老的b页面,查了很多资料仍然无果,

    采用如下代码重置路由,
    const resetAction = NavigationActions.reset({
    index: 0,
    actions: [
    NavigationActions.navigate({routeName: 'b'})
    ]
    })

        this.props.navigation.dispatch(resetAction);
    

    虽然使b页面完全刷新了,但是实际上是从c-----到老的b页面,然后路由到根a页面,在路由到b页面,从体验上来看十分不友好?其实想实现的效果就是切换城市后,把整个首页都刷新?有老师知道怎么处理吗?具体的解决方案是什么?



  • 你需要使用redux或者mobx来管理model层。



  • 谢谢,我用的是redux,来管理state的,会触发render,但是组件初始化部分,不会再次调用的?



  • c返回b应该 触发componentWillReceiveProps
    在这个生命周期判断nextProps与this.props来对应操作