上一节通过 dispatch
控制了对共享数据 appState
操作的渠道,这种模式可以很好的解决共享数据修改难以排查的问题,现在我们再做一次抽离,使这种模式可以很好的复用到其他应用上。
构建一个函数叫createStore
用来生成一个维护共享数据的中心store
。1
2
3
4
5
6function createStore(state, stateChanger) {
return {
dispatch: (action) => stateChanger(state, action),
getState: () => state
};
}
createStore
接收两个参数 state 和 stateChanger, state 用于表示应用程序的状态,stateChanger 就是上一节的 dispatch 用于根据 action 的变化去操作 state。
createStore 会返回包含两个方法 getState 和 dispatch 的对象。getState 用于返回 state 参数,dispatch 用于修改数据,和之前不同的是它只接受一个参数 action,然后它会把 state 和 action 一并传给 stateChanger,那么 stateChanger 就可以根据 action 来修改 state 了。
现在使用 createStore 来修改上一节的代码。
1 |
|