react-redux 的业务代码是写在container页面文件里,还是写在reducer文件里

如题所示:
如果有一大段代码,这段代码纯用来操作js计算(假设复杂度极高),并在计算结束后反馈到页面上。那么这段代码写在哪里比较好。
第一种写在页面里,页面里面可以拿到store下的绝大多数数据,但是页面一般只用来展示;
第二宗写在reduce文件,只能拿到改reduce的state,但是文件很整洁;

阅读 3.4k
1 个回答

这个问题有点涉及架构了,现在社区也没有明确的结论,我说一点自己的看法。

遇到这种情况我会遵循两个原则:

1.如果对容器组件和展示组件做了明确区分,或者没做区分但是当前组件的业务逻辑很简单,那么我会保证展示组件的纯洁性,把逻辑放到container/reducer里面;

2.如果这段代码需要复用,且涉及到的组件没有共同的父组件,那么我会把逻辑放到reducer中,通过action提供必要的参数,在reducer中计算。

除此以外我会尽量把逻辑放到组件中。也就是说,对你的描述而言,我会放到container里面。

如果逻辑很长影响代码可读性,可以考虑抽成一个单独的文件,暴露调用接口和取值接口。这个做法不是很规范,有野路子的嫌疑,我也很少用。

另外还有一点,如果为了计算需要从store引入大量参数,那么我也会考虑放到reducer中。因为这样会让你的组件更新得更频繁,或者shouldComponentUpdate写得更复杂

社区早期是推崇逻辑放到action里的,现在也有reducer派的声音了。如果你需要单元测试,reducer的做法会带来很大便利,测试纯函数的感觉,谁用谁知道。

抛砖引玉,希望能有高手说两句

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题