什么时候在 React Native 中使用 redux?

When to use redux in React Native?

我正在尝试构建一个应用程序,它有 3 个 Reducer

  1. AccountDetails 它包含所有类型的用户产品
  2. GeneralData(例如设备的唯一 ID、令牌等)
  3. 购物车

我和我的同事目前正在构建一个有 6 个屏幕的注册屏幕(ui/ux 团队要求这样做)

  1. 输入用户名
  2. 输入密码并确认密码
  3. 输入DoB
  4. 输入邮箱
  5. 提交所有四个数据的屏幕 注意:我们使用 react-navigation

所以我的同事建议使用 redux 来处理这种数据流,我认为为注册创建另一个 redux 有点“矫枉过正”,为什么不将用户名数据、密码、DoB 和电子邮件传递给 route.params 并将其提交到最后一个屏幕,我们将有很多 Reducer 来处理注册、恢复密码、恢复用户名以及其他事情。

但我们都想让这个应用程序具有可扩展性和更易于维护,但我真的不知道这样做的正确方法

很多人都想在任何情况下都使用 Redux。许多其他人试图避免使用 Redux,仅在 绝对必要时才使用它

您提到您和您的同事都希望使应用程序具有可扩展性和更易于维护。您可以就您正在考虑的两种方式中的任何一种进行争论,因此这两种方式都不是必要的错误

然而,普遍的共识是您可能将您的表单状态放入 Redux。 Redux 有 an FAQ page on this question here.

考虑回答“我应该为此使用 Redux 吗?”的一般方式是该信息是否会在整个应用程序的其他地方使用。

因此对于您的场景,您有:

  • 帐户详细信息 -> 100% 使用 Redux
  • 一般详情 -> 也许吧。通常有更简单的令牌方法,例如将它们放入 LocalStorage 或 AsyncStorage
  • 购物车 -> 可能。再次问问自己,您是否会在多个靠得很近的屏幕上使用这些信息

根据您与同事的讨论,我认为答案是两者兼而有之。在屏幕之间传递该数据非常好(并且每一步都使用 Redux 肯定是矫枉过正),但是您需要在成功注册结束时将所有这些值添加到 Redux。因为那些是您之前提到的“帐户详细信息”,不是吗?

您的项目很简单,只有 6 个屏幕。对于简单的项目,您不必使用 Redux。 是否使用 Redux 取决于您的决定。 但是随着你的项目的扩展,你会发现用route.params来处理所有的状态是极其困难的。然后你需要使用一些特殊的东西来有效地处理状态,这必须是 Redux。 Redux 不是什么特别的东西,而是集中式状态管理系统。