码迷,mamicode.com
首页 > 其他好文 > 详细

实现一个简单的订阅与发布模式的代码块,和redux

时间:2018-03-11 21:12:55      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:body   订阅   ini   listeners   val   export   store   row   action   

/**
* Created by Mrzou on 2018/3/11.
*/

//实现简单的订阅与发布模式的代码块
export function pattern() {

let currentListeners = []

function subscribe(type, listener) {

if ((typeof listener !== ‘function‘) || (typeof listener !== ‘string‘)) {
throw new Error(‘参数类型错误‘)
} else {
currentListeners.push({type, listener})
}

}

function dispatch(type, value) {

currentListeners.forEach(v=> {
(v.type === type) && v.listener(value)
})

}

return {subscribe, dispatch}
}


//实现一个简单的redux
export function createStore(reducer) {
let currentState = {}
let currentListeners = []

function getState() {
return currentState
}

function subscribe(listener) {
currentListeners.push(listener)
}

function dispatch(action) {
currentState = reducer(currentState, action)
currentListeners.forEach(v=>v())
return action
}

dispatch({type: ‘@@MONI_REDUX/INITIALSTATE‘})

return {getState, subscribe, dispatch}
}

实现一个简单的订阅与发布模式的代码块,和redux

标签:body   订阅   ini   listeners   val   export   store   row   action   

原文地址:https://www.cnblogs.com/MrZouJian/p/8545238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!