起初,我的 RN应用仅使用 AsyncStorage 为用户存储我的身份验证参数。
最近,我决定将 redux 集成到此应用程序中,以便可以进行全局存储,强大的代码结构和干净的单元测试。
所以我确实实现了 Redux 和 Redux-thunk 。它工作正常,但我注意到一些令我着迷的东西。 当我刷新我的应用程序时,我注意到我的redux状态为未持久。
我丢失了身份验证凭据。在生产中,这可能意味着我的用户每次关闭我的应用程序都必须登录。
所以我不得不使用 AsyncStorage 来实现redux-persist
。
我的问题是:根据定义,为什么我已经需要在我的本机应用程序中实现redux-persist
简单,未加密,异步,持久的键值存储 该应用程序全局的系统。
?
感谢您的解释
答案 0 :(得分:0)
Redux为您提供了一种在应用程序中传递某些数据(状态)的方法。换句话说,您可以使用一致的数据流(动作,动作创建者和缩减者)在应用程序的不同组件之间共享数据。
此数据(状态)存储在内存中。只要您的应用程序正在运行,就可以访问它。如果该应用已关闭,则会丢失它。
AsyncStorage将数据保存到LocalStorage。再次启动应用程序时,您可以从那里检索保存的数据,以使用户可以访问应用程序在关闭前所处的状态。
Redux和AsyncStorage之间没有依赖关系。并非Redux管理的所有数据(状态)都需要由AsyncStorage保存。并非所有由AsyncStorage保存的数据都需要由Redux管理(在保存之前)。
Redux和AsyncStorage完全是两个不同的工具,它们具有不同的用途。它们可以一起使用,也可以分开使用。
Redux-persist是一个工具,它使用AsyncStorage来存储Redux管理的“状态”(或状态的一部分)。如果您不需要在应用程序会话之间保存此“状态”,则可以使用AsyncStorage仅保存所需的内容,例如仅用户登录令牌。
答案 1 :(得分:0)
根据文档:
建议您在AsyncStorage的顶部使用抽象,而不是直接在AsyncStorage上使用抽象,因为它在全球范围内都可以使用,而不是用于照明。
Redux-persist是AsyncStorage之上的抽象。它提供了一种更好的方法来存储和检索更复杂的数据(例如redux-persist具有persistentReducer(),persistStore())。同样,根据定义,AsyncStorage只是一个存储引擎。 Redux-persist在您选择的任何存储引擎(https://github.com/rt2zz/redux-persist#storage-engines)之上都实现了上述有用的功能;它不一定必须与AsyncStorage一起使用。