美文网首页
react-redux的学习摘记

react-redux的学习摘记

作者: louhangfei | 来源:发表于2019-10-19 18:18 被阅读0次

    redux的api

    applyMiddleware // 应用中间件
    bindActionCreators // 将action转化为props
    combineReducers: 将多个reducer合并为一个
    compose //
    createStore //创建store
    

    react-redux的api

    Provider:
    connect: 
    // 前两个最常用,后面几个不常用
    connectAdvanced: (...)
    createDispatchHook: (...)
    createSelectorHook: (...)
    createStoreHook: (...)
    shallowEqual: (...)
    useDispatch: (...)
    useSelector: (...)
    useStore: (...)
    ReactReduxContext:
    batch: (...)
    

    store的方法

    dispatch: ƒ ()
    getState: ƒ f()
    // dispatch和getState最为常用
    liftedStore: {dispatch: ƒ, subscribe: ƒ, getState: ƒ, replaceReducer: ƒ, Symbol(observable): ƒ}
    replaceReducer: ƒ (n)
    subscribe: ƒ subscribe(listener)
    Symbol(observable): ƒ ()
    

    createStore的简单实现

    const createStore = (reducer) => {
      let state;
      let listeners = [];
    
      const getState = () => state;
      // getState方法,获取全局state
    
      const dispatch = (action) => {
        // dispatch方法执行后,1.先运行reducer函数,得到新的state
        state = reducer(state, action);
        // 2. 再执行各个订阅函数,一般是render方法
        // 第1步和第2步顺序不能倒过来
        listeners.forEach(listener => listener());
      };
    
      const subscribe = (listener) => {
        // 订阅的时候,将订阅函数存到函数库中
        listeners.push(listener);
        // 返回一个新的方法取消订阅函数,如果运行该取消订阅函数,那么就会将该listener取消。
        return () => {
          listeners = listeners.filter(l => l !== listener);
        }
      };
    
      dispatch({}); //dispatch一个空的action,得到state的初始值,就是reducer中default的返回值
    
      return { getState, dispatch, subscribe };
    };
    
    

    相关文章

      网友评论

          本文标题:react-redux的学习摘记

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