什么时候在 React Native 中使用 redux?
When to use redux in React Native?
我正在尝试构建一个应用程序,它有 3 个 Reducer
- AccountDetails 它包含所有类型的用户产品
- GeneralData(例如设备的唯一 ID、令牌等)
- 购物车
我和我的同事目前正在构建一个有 6 个屏幕的注册屏幕(ui/ux 团队要求这样做)
- 输入用户名
- 输入密码并确认密码
- 输入DoB
- 输入邮箱
- 提交所有四个数据的屏幕
注意:我们使用 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 不是什么特别的东西,而是集中式状态管理系统。
我正在尝试构建一个应用程序,它有 3 个 Reducer
- AccountDetails 它包含所有类型的用户产品
- GeneralData(例如设备的唯一 ID、令牌等)
- 购物车
我和我的同事目前正在构建一个有 6 个屏幕的注册屏幕(ui/ux 团队要求这样做)
- 输入用户名
- 输入密码并确认密码
- 输入DoB
- 输入邮箱
- 提交所有四个数据的屏幕 注意:我们使用 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 不是什么特别的东西,而是集中式状态管理系统。