React native 已经有了异步存储。为什么我应该在我的 React Native 应用程序中使用 Redux 和 Redux Thunk?

React native already has Async Storage. Why should I use Redux and Redux Thunk in my react native app?

我有一个愚蠢的问题,但我对此非常困惑。如果 React Native 有可用的异步存储,为什么要使用 Redux 和 Redux Thunk?为什么我们不能将所有数据都保存在异步存储中?在异步存储上使用 Redux 的 purpose/benefit 是什么?

它们是不同的东西,有不同的用途。

Async Storage 是一个简单的 key/value 存储。它只适用于字符串。所以你可以做,AsyncStorage.set("someKey", "someValue") 就是这样。它的目的是 save/persist phone 文件系统上的数据,以便它可以在多个应用程序会话(关闭和打开应用程序)中使用

Redux 是一个完整的状态管理解决方案,允许您在应用程序 运行 期间将任何类型的 javascript 数据保存在内存中,并在应用程序的任何地方都可用。想一想在 react-native 应用程序中,两个不同的组件如何无法轻易地查看和修改彼此的状态,必须有某种方式让它们进行通信。基本上,Redux 可以帮助您做到这一点。

考虑到您的理解水平,我建议您在处理 Redux 之前先研究一下 React Context。它是一个比 Redux 简单得多的状态管理解决方案。它包含在 React/doesn 中,不需要不同的代码结构,还将帮助您理解 Redux 的用途。

Redux 和异步存储是两个不同的概念。需要明确的是,Redux 是状态管理,异步存储就像是客户端数据库。如果你熟悉 web 开发,我可以说 Redux 就像会话存储,异步存储就是本地存储。

这意味着Redux正在存储你使用它时的应用程序状态,当应用程序被杀死时,Redux中的所有状态将被删除。相比之下,即使应用程序被终止,异步存储也会存储应用程序的状态。

因此,有这两者的结合。示例:当用户第一次登录应用程序时,我们会将用户信息存储在异步存储中,因此从下次开始,用户将不需要再次登录。