为什么我需要在Asyncstorage上使用redux-persist?

时间:2018-11-08 16:38:33

标签: react-native redux expo redux-persist

起初,我的 RN应用仅使用 AsyncStorage 为用户存储我的身份验证参数。

最近,我决定将 redux 集成到此应用程序中,以便可以进行全局存储,强大的代码结构和干净的单元测试。

所以我确实实现了 Redux Redux-thunk 。它工作正常,但我注意到一些令我着迷的东西。 当我刷新我的应用程序时,我注意到我的redux状态为未持久

我丢失了身份验证凭据。在生产中,这可能意味着我的用户每次关闭我的应用程序都必须登录。

所以我不得不使用 AsyncStorage 来实现redux-persist

我的问题是:根据定义,为什么我已经需要在我的本机应用程序中实现redux-persist

  

简单,未加密,异步,持久的键值存储   该应用程序全局的系统。

感谢您的解释

2 个答案:

答案 0 :(得分:0)

  1. Redux为您提供了一种在应用程序中传递某些数据(状态)的方法。换句话说,您可以使用一致的数据流(动作,动作创建者和缩减者)在应用程序的不同组件之间共享数据。

  2. 此数据(状态)存储在内存中。只要您的应用程序正在运行,就可以访问它。如果该应用已关闭,则会丢失它。

  3. AsyncStorage将数据保存到LocalStorage。再次启动应用程序时,您可以从那里检索保存的数据,以使用户可以访问应用程序在关闭前所处的状态。

  4. Redux和AsyncStorage之间没有依赖关系。并非Redux管理的所有数据(状态)都需要由AsyncStorage保存。并非所有由AsyncStorage保存的数据都需要由Redux管理(在保存之前)。

  5. Redux和AsyncStorage完全是两个不同的工具,它们具有不同的用途。它们可以一起使用,也可以分开使用。

  6. 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一起使用。