打造简化版Redux与react-redux createStore 的快速入门指南
最编程
2024-07-26 07:05:49
...
function createStore(reducers, enhancer) {
// 处理中间件
if (enhancer) {
return enhancer(createStore)(reducers)
}
// 唯一的store,数据的源头,包含多个state,有多少个reducer就有多少个state
let store = {};
// 初始化一下store的值
store = reducers(store, {});
// 存放订阅的回调
const queques = [];
function dispatch(action) {
// 这里会将reducers中所有reducer全跑一遍,只要是有这个type的,全都会执行
store = reducers(store, action);
// 将队列中所有注册的回调,全跑一遍
queques.forEach(queque => queque());
}
// 只返回了当前store,快照
function getState() {
return store
}
// 只是将回调存了起来,并不会执行
function subscribe(cb) {
queques.push(cb)
}
return {
dispatch,
getState,
subscribe
}
}