zoukankan      html  css  js  c++  java
  • 自己动手实现redux(一)

    redux 工作流

    redux实现

    let createStore = (reducer){
        //    state存储(不是管理)着所有状态
        //    最开始先调用下reducer,以得到最初各组件的默认状态值
        let state = reducer(); 
        //     redux的实质其实就是观察者模式,当store里的数据发生变化时,redux会通知所有订阅者
        //    `istenners`是一个数值,里面就是所有的订阅者
        let listheners = [];
        //    getState用于从store中从获取数据
        let getState = (){
             return state;
        };
        
        //     订阅事件,返回一个取消订阅函数
        let subscribe =  (cb)=>{
            listhenners.push(cb);
            return ()=>{
                listhenners = listhenners.filter(item=>{
                   return  item !== cb
                });
            }
        };
    
        let dispatch = (action)=>{
            //     `dispatch`一个action(动作), 交给纯函数处理
            state = reducer(state, action);
            //     当数据发生改变后,通知订阅者
            listhenners.forEeach(listhener=>{ listhener() });
        };
    
       return {
            getState,
            subscribe,
            dispatch
        }
    }
    export default createStore;
    

    redux的使用

    当我们使用redux时, 首先需要使用redux的createStore并且传入reducer来创建我们的store

    import createStore from 'redux';
    //   此处还用引入reducer 
    let store = createStore(reducer);
    //    导出的store, 在需要的地方引入即可 
    export  default store;
    
    ### 以上我们就实现了一个简易的redux
  • 相关阅读:
    week8
    2020中国大学生程序设计竞赛(CCPC)-网络选拔赛 题解
    卷积形式dp的多项式求逆做法
    多项式乘法逆(review)
    LaTex学习
    BZOJ 2653 middle
    BZOJ3207 花神的嘲讽计划Ⅰ
    BZOJ1901 Zju2112 Dynamic Rankings
    POJ2104 K-th Number
    平衡树总结专题
  • 原文地址:https://www.cnblogs.com/paopaolee/p/9504963.html
Copyright © 2011-2022 走看看