崩溃后重置本机redux导航状态

问题描述 投票:0回答:1

我们正在使用Redux导航并保持Redux状态。但是,有时,当用户导航到页面并且发生意外错误时,应用程序崩溃并显示白屏。如果再次启动该应用程序,则显然是因为加载了相同的状态而再次崩溃。结果应用无法使用-启动后,白屏立即崩溃。

我想如果其中一个屏幕上有错误,则可以将应用程序崩溃,但是由于一个错误的屏幕,我不想使整个应用程序对用户不可用,因此以某种方式重置将非常有用状态并允许用户继续使用该应用程序的其他功能。

关于实现该目标的任何想法?

react-native redux react-redux react-navigation
1个回答
0
投票

我认为真正的问题是:您是否要完全保留导航状态?您是否真的要在应用启动时加载上次访问的屏幕,而不是应用的第一个屏幕?我从未见过执行此操作的应用程序

另一个问题是如何在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,捕获异常并在发生崩溃的情况下重置持久的导航状态

© www.soinside.com 2019 - 2024. All rights reserved.