redux 的 action 是一个很重要的概念,要管理状态是很简单的,一个 {} 就可以了,但是应用复杂度一上去,这就是灾难了,有 action 这么一个概念存在,可以做到很方便的维护和 debug,让你明确 “when, where, why, and how your application's state changed”,理解这个目的,就很容易理解 redux 为什么要这样设计了。
但是 redux 有两个比较坑的点, 一个是把 action 这个概念暴露给了使用者,导致使用者自己要定义一堆的 action type,action creator,社区后来又出现了
https://redux-toolkit.js.org/ 这一类的工具来减少工作量。如果是从头开始写的话,你会觉得 redux 写起来真的太繁琐了,但是只维护的话,其实是非常轻松的,每一次交互操作触发了什么样的 action,携带了什么样的 payload,导致状态如何变化,都非常清晰。
第二个是 redux 的 reducer 是要求必须是同步和 pure 的,把最常需要处理的副作用完全不管,全部丢给了第三方的 middleware 来处理,各种各样的 middleware 层出不穷,又会额外引入非常多的概念。