在以下情况下,我们应该使用redux吗?

尼沙尔·高塔姆(Nishchal Gautam)

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

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

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

就我而言,表单并不像显示表单那样简单,并且在提交,处理数据时,我们还需要处理某些更改,具有一些业务逻辑并且有时实际上还要更新其他值。

对于禁用此复选框时,此输入被禁用的情况,则不需要redux,其余的呢?你们在干什么?

尼沙尔·高塔姆(Nishchal Gautam)

我们基于不同方面做出了决定,因为redux太冗长,我们不想使用它,但这不是工程师选择技术的方式。

我们决定权衡每一点:

  • 性能(5)
  • 状态重复(5)
  • 易于处理副作用(关注点分离)(10)
  • 学习曲线(3)
  • 单元测试的难易程度(7)
  • 调试(开发经验)(5)
  • 详细程度(少冗长为佳)(5)

当我们评估这些时,带有saga的redux排名最高,可以肯定formik具有它的优势,但是我们的整个App只是表格,而这些表格并不像渲染和做一些次要的副作用那么简单,而是巨大的表格和副作用以如此复杂的方式,仅仅能够使用devtools来跟踪问题就已经很大了。

另一件事是让redux-saga层有所帮助,无论如何,这就是我们做出决定的方式,但是99.9%的表单应该继续使用formik,但是不幸的是,我们的比例为0.1%,redux随开发人员的数量而扩展(5000+开发人员在公司中,有50多个积极地为这个项目做贡献的人),而具有devtools以及能够分离副作用,探索数据等功能的redux更有意义。

请在需要时选择自己的。

https://github.com/reduxjs/redux/issues/1287#issuecomment-175351978 Dan表示,如果在全局上很重要,请使用redux或以复杂的方式进行更改。我们的表单以复杂的方式进行更改,因此很难在其中维护代码未来,formik使得编写代码变得容易,而redux使其易于调试和维护。(为我们)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在以下情况下我们应该把演员放在哪里

我应该在以下情况下使用线程安全集合吗?

在以下情况下我应该使用“易失性”吗?

在以下情况下,我应该在ASP.net MVC中使用4条单独的路由吗?

在以下情况下,我应该使用什么-方法重载或使用泛型?

字符串比较:为什么在以下情况下我们会有不同的输出

在这种情况下,我们应该在所有地方都使用noexcept吗?

在无法完成RVO的情况下,我们应该编写`std :: move`吗?

在什么情况下我们应该在类型声明中使用`[] a`?

在以下情况下,我应该如何编写JUnit测试?

在以下情况下应该输出什么?

我们可以在没有雄辩的ORM的情况下使用Laravel表单绑定吗?

我们可以在不使用Cloud Composer的情况下运行气流模板吗

我们可以在不迁移到AndroidX的情况下使用Android Slice吗?

我们可以在没有OAuth的情况下使用Google youtube数据API吗?

我们可以在不调整大小的情况下对图像使用缩放比例吗?

我们可以在不部署的情况下使用多维数据集吗?

我们可以在没有MAAS的情况下使用Juju吗?

我们可以在不使用 Firebase 的情况下向全球发送通知吗?

在以下情况下使用什么模式?

在以下情况下如何使用python metaclass?

在以下情况下如何使用innertHTML

在以下情况下应使用哪种排序算法?

在以下情况下如何使用Promise

如何在以下情况下快速使用枚举?

Postgres-在以下情况下插入并使用案例

如何在以下情况下使用xsl:if?

在以下情况下如何使用线程或任务模式

在以下情况下如何复制?