(二)Redux:实现一个Store
还记得Redux是为了拿来做什么吗?
Redux为了解决各种状态的在代码中离散
store接收(dispatch)一个事件(type),选择对应的响应(Action),触发对视图的回调(注:必须订阅subscribe,才有回调)
请始终牢记!
确定了需求,我们才好写store
实现一个Store
// ---------------------
// 接下来我们来实现一个Store
// var store = Redux.createStore(counter)
const createStore = (reducer) => {
let state
let listeners = []
const getState = () => {
return state
}
//store接收(dispatch)一个事件(type)
const dispatch = (action) => {
//选择对应的响应(Action)
state = reducer(state,action)
//触发对视图的回调(注:必须订阅subscribe,才有回调)
listeners.forEach(listener => listener())
}
const subscribe = (listener) => {
listeners.push(listener)
return () => {
listeners = listeners.filter(l => l !== listener)
}
}
//初始化
dispatch()
return {
getState,
dispatch,
subscribe
}
}
var store = createStore(counter)
// ---------------------
这是最终的store
更多信息,请查看我的Github