重新设计 Redux

查看原文

这篇文章回答了三个问题:是否真的需要库管理状态,Redux 为什么会流行,以及如何改进状态管理。

  • 前端开发的核心就是如何管理状态。在 React 中,状态就有组件内部状态,子组件从父组件获得的状态,以及树中的组件订阅 Root Provider 提供的状态。状态都放在 view 里面倒是方便,但是问题在于如果设计变了,整个程序就要重写。那么最合适的做法可能就是把状态都放在 root component 里面。如果在将 State 移出 view lib,那么就是 Redux 这种路数了(它通过 provider/consumer pattern 在 Redux 和 Tree 之间同步状态)。
  • ^ Redux 的核心数据结构其实可以用 global.state = {} 来表示。
  • Redux 为 ^ 这个数据结构附加的功能是绑定了一套工具函数的流水线。在 Redux 中数据是单向的,源头是 dispatch action, 终端是 update state。在这中间会使这样的流程: dispatch => middleware => reducers => state => subscriptions。其中 middleware 用于监听处理 action,reducers 写 actions 如何变更 state, subscriptions 用于广播状态变更。
  • Redux 虽然简单,但是要想写好程序需要阅读很多文档,看教程,投入很多时间。// 我就是那个 "this isn't for me, I'm going back to jQuery" 的那个人。
  • 作者提出了如何改进 Redux 的一些思路:Configuration over Composition,少写 boilerplate 代码,如果插件写法很 hack 那就由库提供更好地支持。