【问题标题】:React-native redux navigation state reset after crash崩溃后React-native redux导航状态重置
【发布时间】:2020-03-18 21:48:46
【问题描述】:

我们正在使用 redux 导航和持久化 redux 状态。但是,有时当用户导航到页面并发生意外错误时,应用程序会崩溃并出现白屏。如果再次启动应用程序,它显然会再次崩溃,因为加载了相同的状态。结果应用程序变得无法使用 - 应用程序启动后立即出现白屏崩溃。

我想如果其中一个屏幕上出现错误,让应用程序崩溃是可以的,但由于一个错误的屏幕,我不想让整个应用程序对用户无法使用,以某种方式解决它会很棒重置状态并使用户能够继续使用应用程序的其他功能。

关于如何实现这一目标的任何想法?

【问题讨论】:

    标签: react-native redux react-redux react-navigation


    【解决方案1】:

    我认为真正的问题是:您是否想要保持导航状态?您真的想在应用启动时加载上次访问的屏幕而不是应用的第一个屏幕吗?我从未见过这样的应用程序

    另一个问题是如何在 redux 中保持导航状态。这只是使用旧版本的 react-navigation 时的一种模式(如果我没记错的话,v1 和 v2),但即便如此,它也不是在 redux 中保持导航状态的最佳模式(redux integration of react-navigation v1),更不用说在重启时保持它了.每次用户启动应用程序时,导航都应该重新开始

    另请阅读当前版本 (v5 - https://reactnavigation.org/docs/state-persistence) 中的状态持久性,通常根本不涉及 redux

    关于状态持久性:通常您只保留长期存在的东西,例如身份验证状态、授权令牌、用户设置,而不是一些经常被丢弃的动态数据。例如,如果您打开某个页面并获取要在该页面上显示的数据,则没有理由将该数据持久保存在 AsyncStorage 中,因为您为什么要这样做?每次打开页面时都应重新加载此数据,而不是从持久状态中恢复。 Redux-persist 允许您将州的不同部分列入白名单或黑名单

    总结一下: 1.弄清楚你是否需要保持导航状态。如果没有,问题解决 2. 如果你这样做了,尝试设置 redux-persist 的方式,它不会持久化短暂的容易出错的数据 3. 弄清楚导航状态是如何保持的(通过 redux 或它自己,请参阅我之前提供的链接中的示例) 4. 整合react-native-exception-handler,捕获异常并在崩溃时重置持久导航状态

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2017-05-19
      相关资源
      最近更新 更多