美文网首页React
Redux中间件(二):手写简单版redux

Redux中间件(二):手写简单版redux

作者: Viewwei | 来源:发表于2021-01-07 18:56 被阅读0次

查看Redux的源码非常简单,他的核心思想就是在createStore中申明一遍变量来保存state值,然后在申明一个数组来保存订阅的值,当执行store的getState函数的时候,就直接返回state的变量,dispath 就是保存变量的数组,让它执行保存的方法就可以了,订阅就是把监听器保存到订阅的变量中,已方便dispatch时候更细。实例代码如下

export default function createStore(reducer){
    // reducer 表示一个函数
    let currentState; //定义变量保存state
    let currentListeners =[] //保存监听器
    function getState() { //获取state值
        return currentState
    }
    function  dispatch(action) { //dispath函数
        currentState = reducer(currentState,action)
        currentListeners.forEach(listener =>listener()) //组件更新
    }

    function subscribe(listener) { //订阅函数
        currentListeners.push(listener)
      //返回一个函数,已方便取消订阅
        return () =>{
            const index = currentListeners.indexOf(listener)
            currentListeners.splice(index,1)
        }
    }
    dispatch({type:"REDXXXXXXXX"}) //dispatch一下主要是使用默认值
    return {
      //返回这个对象
        getState,
        subscribe,
        dispatch
    }

}

成功实例:点击添加可以正常使用


image.png

相关文章

网友评论

    本文标题:Redux中间件(二):手写简单版redux

    本文链接:https://www.haomeiwen.com/subject/bmwwoktx.html