【问题标题】:App Navigation state persisting EVEN IF app closed and restarted即使应用程序关闭并重新启动,应用程序导航状态仍然存在
【发布时间】:2019-01-23 18:02:25
【问题描述】:

我有一个带有两个屏幕的 react-native 应用程序,主页和详细信息。使用 react-navigation,我将 Stack navigator 设置如下

const RootStack = createStackNavigator(
{
 Home: FormComponent,
 Details: DetailScreen
},
{
 initialRouteName: "Home",
 headerMode: "none"
}
);

主页包含一个表单,一旦提交,就会导航到包含相关数据的详细信息屏幕(使用 navigation.navigate("Details",{some data}))。此时,如果我退出应用程序,然后再次打开它,将加载详细信息屏幕,并保留所有数据(而不是主屏幕)。我记录了导航对象数据 (this.props.navigation.),打印出来的就像应用程序从未关闭一样。
我在这里错过了什么吗?我是 React Native 和 Navigation 的新手,但据我了解,这不是预期的行为。

尝试卸载应用程序并重建。这会重置应用程序和主屏幕加载。如果我尝试在不卸载的情况下重新安装,则返回相同的行为。 还尝试在 ComponentWillUnmount() 上手动强制 navigation.goBack() 但没有区别。

【问题讨论】:

  • 您确实关闭了它(滑动?)。否则它仍然有一个背景的 AppState。
  • 如果您使用的是 Android,则实际上没有您可以控制的“退出”。我不知道 React 如何与 Android 一起工作,但通常你需要考虑应用程序的生命周期,并了解生命周期是由平台驱动的,而不是由应用程序驱动的。确保你知道 React 在这里的工作方式实际上会导致你理解的生命周期变化。
  • @stever 这与将状态存储在持久键属性中的反应导航有关。删除它解决了问题

标签: react-native react-native-android react-navigation


【解决方案1】:

这应该是一个评论,但遗憾的是我没有足够的声誉。 您能否检查一下您是否不小心将 persistenceKey 设置为导航器属性?

https://reactnavigation.org/docs/en/state-persistence.html

【讨论】:

  • 好吧,我很惭愧地说,我错过了。更早添加它,然后有点忘记它。你是对的。删除它并且工作正常。可能我添加它的原因是因为我试图在您切换应用程序时保留状态但点击应用程序生成的通知以返回应用程序
猜你喜欢
  • 2019-06-27
  • 2019-12-05
  • 1970-01-01
  • 2018-12-06
  • 2011-10-29
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多