发布订阅模式
发布者:唯一的(主动方)
订阅者:多个(被动方)
发布者唉发布一条信息的时候会主动通知到订阅者
接下来,用js实现一个简单的状态管理器
function createStore(reducer,initState={}){
let state = initState;
let subscribeArr =[];
// 注册成为我们状态管理器的订阅者
function subscribe(subscribeItem){
subscribeArr.push(subscribeItem)
}
// 修改状态
function dispatch(actions){
if(typeof actions !== 'object') return alert("actions类型不合法")
state = reducer(state,actions)
// 通知订阅者
for(let i =0;i<subscribeArr.length;i++){
subscribeArr[i]()
}
return actions
}
// 获取仓库状态
function getState(){
return state
}
return {
subscribe,
getState,
dispatch
}
}
使用状态管理器
let initState = {
name:'jinxiaodi',
count:0
}
let reducer = (state,actions)=>{
if(actions.type==="CHANGE_NAME"){
state.name = actions.name
}
if(actions.type=== "ADD"){
++state.count
}
if(actions.type=== "DIS"){
--state.count
}
return {...state}
}
let store = createStore(reducer,initState)
redux就是利用发布订阅模式来使全局都能拿到仓库里面的数据,有兴趣的同学可以看看的我的其他文章,记得点赞关注一下!