作用:
- 组件间通信
- 通过对象驱动组件进入生命周期
- 单一数据源,可以方便数据操作
思考:
为什么需要store,通过action reduce来控制数据 而不是直接一个 obj类似 obj[a] =’someting’ 来修改对象 来操作数据呢
因为直接一个去修改对象的话,会严重影响我们调试 因为我们不知道是哪里修改的这个数据,但是通过action,redux的方式 数据改变之后我们都可以留下对应的日志
数据流程:
- 项目 初始化 createStore(reducer, preloadedState, enhancer) 生成store(如果有enhancer会修改store的dispatch函数) 放入 Provider中
- 页面通过 view> dispatch(action)(有enhancer 的话就会执行 中间件的方法)调用reduce会返回新的state 然后dispatch中更新 到store中去
1、用户通过 View 发出 Action:
store.dispatch(action);
2、然后 Store 自动调用 Reducer,并且传入两个参数:当前 State 和收到的 Action。 Reducer 会返回新的 State 。
let nextState = xxxReducer(previousState, action);
3、State 一旦有变化,Store 就会调用监听函数。
store.subscribe(listener);
4、listener可以通过 store.getState() 得到当前状态。如果使用的是 React,这时可以触发重新渲染 View。
function listerner() {
let newState = store.getState();
component.setState(newState);
}