React Navigation + Redux:如何在多个导航器中安装场景时处理状态?

时间:2017-09-06 20:56:27

标签: react-native redux react-navigation

我有一个带有(理论)导航结构的应用

/TabNavigator
  /StackNavigator1
    / Home
    / View
    / Edit
  /StackNavigator2
    / Search
    / View
    / Edit
  /StackNavigator3
    / Profile
    / View
    / Edit

其中HomeSearchProfile是屏幕组件,ViewEdit是在每个堆栈中重复使用的屏幕组件。

因此,如果我的屏幕在每个堆栈中都可用,那么它们可以同时安装多次,即使组件本身只有一个商店。

例如,如果我导航到第一个堆栈中的View并加载ID为1的项目,然后导航到第二个堆栈中的View并加载ID为2的项目,当我导航回到第一个堆栈,我的状态将更新,我将失去我正在看的东西。

当React Navigation多次挂载时,您应该如何管理屏幕状态?

1 个答案:

答案 0 :(得分:0)

在这种情况下你真的需要分享州吗?当在2个或更多组件之间共享相同的状态属性时,应使用Redux。如果您需要的值只与单个组件相关,则可能不需要Redux,您可以在组件自己的状态下处理它,或者通过props将值传递给它。 如果您确实需要出于任何原因使用Redux,那么当您按下"返回"时,一个选项就是使用撤消历史记录返回到先前的值。按钮,例如。 http://redux.js.org/docs/recipes/ImplementingUndoHistory.html

希望它有所帮助。