首页 > 解决方案 > 我们应该在以下情况下使用 redux 吗?

问题描述

我正在开发一个在表单上很大的企业应用程序,有页面和充满表单的页面。通常,当它只是表单时,我们可以简单地使用像 formik 或 react-hook-forms 这样的库,但我一次又一次地看到,当某些事情发生变化时,需要做某事,这意味着我正在以编程方式改变表单值.

我们目前正在使用useEffect并将所有这些业务逻辑副作用放在组件上,但是感觉就像我将视图与业务逻辑混合在一起。

然而,我的直觉是使用redux, 并使用redux-saga这种方式来管理所有副作用和复杂性,我的 UI 是纯粹的并且易于编写测试。而 redux-saga 处理业务逻辑和副作用,无论如何它们都应该属于 IMO,我想知道社区在这种情况下正在做什么。

我的情况,表单不像显示表单那么简单,在提交、处理数据时,我们还需要处理一些变化,我们有一些业务逻辑,有时我们实际上会更新其他值。

对于像这个输入在这个复选框被禁用时被禁用的事情,它不需要redux,其余的呢?你们在干什么?

标签: reactjsformsreduxredux-sagaredux-thunk

解决方案


我们在我们的项目中集成了 Redux 只是因为每个人都在谈论关于Redux的术语ReactJS,我们发现它有点开销并且现在使我们的代码复杂了很多(我们正在使用redux-observable副作用)。

只问自己一个问题——

我们是否要在应用程序的表单/页面/部分之间共享状态?

如果每个表单都是独立的,并且与应用程序的其他部分没有任何关系,那么您不需要任何类型的全局状态,Redux那就是开销。您可能需要考虑更好地构建您的应用程序,在您自己的钩子中移动副作用,并将您的演示文稿与业务逻辑完全分离 - 代码在useEffect,恰好在您的组件中并不一定意味着它是一部分UI 逻辑,因为您可以轻松地将其移动到某种包装器/服务中,或者稍后移动到某种副作用库(如redux-sagaredux-observable或其他东西)中。

总体建议 - 不要过度思考并使其变得复杂,只需尝试以最简单的方式分离应用程序关注点,然后在此过程中您将开始注意到需要重构的内容、可以重用的代码重复以及是否应该引入一些您可以从中受益的图书馆。


推荐阅读