我们正在使用Redux导航并保持Redux状态。但是,有时,当用户导航到页面并且发生意外错误时,应用程序崩溃并显示白屏。如果再次启动该应用程序,则显然是由于加载了相同的状态而再次崩溃。结果应用无法使用-启动后,白屏立即崩溃。
我猜如果其中一个屏幕上有错误,则可以将应用程序崩溃,但是由于一个错误的屏幕,我不想使整个应用程序对用户不可用,因此以某种方式会很不错重置状态并使用户能够继续使用该应用程序的其他功能。
关于如何实现这一目标的任何想法?
答案 0 :(得分: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,在发生崩溃时捕获异常并重置持久的导航状态