参考之前这篇文章里面的案例 我们做一下redux的封装
在案例中 我们用到了 一下三个方法
结合发布订阅的原理
代码如下:
function createQvStore(reducer) {
var list = []
//第一次调用reducer
var state = reducer(undefined, {})
//订阅
function subscribe(callback) {
list.push(callback)
}
//发布
function dispatch(action) {
//第二次调用reducer 会覆盖 初始的值
state = reducer(state, action)
for (var i in list) {
list[i] && list[i]()
}
}
//拿数据
function getState() {
return state
}
return {
subscribe,
dispatch,
getState
}
}