关于redux的疑问

李佩赏
  • 41
  1. 如果不使用redux,而是将状态都保存在顶层组件,但是给每个组件都实现两个接口,getState()和setState(),不是更加方便?

  2. 面试时遇到的问题,觉得有点不知道怎么回答,当时理解的是可能对代码的可读性和可维护性有影响。

不知道还有什么其他的方面,请大佬们帮忙解答。

回复
阅读 1.6k
3 个回答

我这么跟你说吧,切身体会。我之前就是像你说的不用redux,将状态交给顶层组件统一管理。但是随着项目的深入,问题就出来了。
我当时嵌套了3层组件,最下层是一个自己封装的日历组件,当我改变日期等操作想改变state时,你说我该怎么办?
没错我必须从第一层组件起一层层吧改变state的方法当做props往下传,也就是你说的每个组件给一个方法。
然而这只是一个3层嵌套,如果更多的组件相互嵌套。项目将变得不再可控。其他人也看不懂你代码了。
我们用React用Vue用ng是为了什么?其实jquery就能很方便的实现几乎所有业务需求。但是会很杂乱,不可维护。
既然如此,我们就需要用redux,vuex来更好的规范管理你的状态。
redux作者说过:当你需要使用redux的时候,你自然而然会找到它,就是这个道理。
如果你的项目没有让你感到写的很难受,大可不必引入redux

Medusatisfy
  • 178

每个组件单独去setState,缺乏“总司令”reducer对状态进行统一维护,代码散乱。

桃子
  • 22
  • Redux主要做了以下的工作。

    • 某个组件的状态,需要共享
    • 某个状态需要在任何地方都可以拿到
    • 一个组件需要改变全局状态
    • 一个组件需要改变另一个组件的状态

如果每个组件都这样就会无法统一维护。需要有个统一管理How to Change State的地方。这就是reducer的出现的理由。

宣传栏