- Redux 和 React 没有直接关系,它瞄准的目标是应用状态管理。
- 核心概念是 Map/Reduce 中的 Reduce。且
Reducer的执行是同步,产生的State是 Immutable 的。 - 改变
State只能通过向 Reducer dispatch actions 来完成。 State的不同字段,可以通过不同的Reducers来分别维护。combineReducers负责组合这些Reducers,前提是每个Reducer只能维护自己关心的字段。Action对象只能是 Javascript Plain Object,但是通过在store上装载middleware,则可以任意定义action对象的形式,反正会有特定的middleware负责将此action对象变为 Javascript Plain Object。可以以middleware链条为集中点实现很多控制逻辑,例如 Log,Undo, ErrorHandler 等。- Redux 仅仅专注于应用状态的维护,
reducer、dispatch/middleware是两个常用扩展点、Higher-order Store 则仅针对需要扩展全部Store功能时使用。 - react-redux 是 Redux 针对 React/React-Native 的 Binding,
connect/selector是扩展点,负责将store中的状态添加到 Reactcomponent的props中。 - Redux 借用了很多函数式编程的思想,了解函数式编程会利于理解其实现原理,虽然使用它不需要了解很多函数式编程的概念。和 Flux 相比,Redux 的概念更精简、约定更严格、状态更确定、而是扩展却更灵活。