redux 是一个应用数据流框架,主要是解决了组件间状态共享的问题,主要包括三个核心方法,action,store,reducer
关于 Store:
- 整个应用只有一个唯一的 Store
- Store 对应的状态树(State),由调用一个 reducer 函数(root reducer)生成
- 状态树上的每个字段都可以进一步由不同的 reducer 函数生成
- Store 包含了几个方法比如
dispatch
,getState
来处理数据流 - Store 的状态树只能由
dispatch(action)
来触发更改
Redux 的数据流:
- action 是一个包含
{ type, payload }
的对象 - reducer 函数通过
store.dispatch(action)
触发 - reducer 函数接受
(state, action)
两个参数,返回一个新的 state - reducer 函数判断
action.type
然后处理对应的action.payload
数据来更新状态树
所以对于整个应用来说,一个 Store 就对应一个 UI 快照,服务器端渲染就简化成了在服务器端初始化 Store,将 Store 传入应用的根组件,针对根组件调用 renderToString
就将整个应用输出成包含了初始化数据的 HTML。