我有一个带有(理论)导航结构的应用
/TabNavigator
/StackNavigator1
/ Home
/ View
/ Edit
/StackNavigator2
/ Search
/ View
/ Edit
/StackNavigator3
/ Profile
/ View
/ Edit
其中Home
,Search
,Profile
是屏幕组件,View
和Edit
是在每个堆栈中重复使用的屏幕组件。
因此,如果我的屏幕在每个堆栈中都可用,那么它们可以同时安装多次,即使组件本身只有一个商店。
例如,如果我导航到第一个堆栈中的View
并加载ID为1的项目,然后导航到第二个堆栈中的View
并加载ID为2的项目,当我导航回到第一个堆栈,我的状态将更新,我将失去我正在看的东西。
当React Navigation多次挂载时,您应该如何管理屏幕状态?
答案 0 :(得分:0)
在这种情况下你真的需要分享州吗?当在2个或更多组件之间共享相同的状态属性时,应使用Redux。如果您需要的值只与单个组件相关,则可能不需要Redux,您可以在组件自己的状态下处理它,或者通过props将值传递给它。 如果您确实需要出于任何原因使用Redux,那么当您按下"返回"时,一个选项就是使用撤消历史记录返回到先前的值。按钮,例如。 http://redux.js.org/docs/recipes/ImplementingUndoHistory.html
希望它有所帮助。