• redux-1


    一、.redux工作流程

    1.用户发出action

    store.dispatch(action);

    2.store自动调用reducer,并传入2个参数:当前state和收到的action,reducer会返回新的state

    let nextState = todoApp(previousState, action);

    eg:

    const  reducer =(state=0,action)=>{
      switch(action.type){
        case 'INCREMENT':return state+1;
        case 'DECREMENT':return state-1;
        default:return state;
      }
    };
    const store=createStore(reducer);
    3.state一旦有变化,store就会调用监听函数
    store.subscribe(listener);
    listener可以通过store.getState()得到当前状态
    eg:
    const render=()=>{
      ReactDOM.render(
        <Counter
          value={store.getState()}
          onIncrement={()=>store.dispatch({type:'INCREMENT'})}
          onDecrement={()=>store.dispatch({type:'DECREMENT'})}/>,
          document.getElementById("root")
      );
    };
    store.subscribe(render);
    二、redux实例--点击计数
    const Counter = ({ value, onIncrement, onDecrement }) => (
      <div>
      <h1>{value}</h1>
      <button onClick={onIncrement}>+</button>
      <button onClick={onDecrement}>-</button>
      </div>
    );

    const reducer = (state = 0, action) => {
      switch (action.type) {
        case 'INCREMENT': return state + 1;
        case 'DECREMENT': return state - 1;
        default: return state;
      }
    };

    const store = createStore(reducer);

    const render = () => {
      ReactDOM.render(
        <Counter
          value={store.getState()}
          onIncrement={() => store.dispatch({type: 'INCREMENT'})}
          onDecrement={() => store.dispatch({type: 'DECREMENT'})}
        />,
        document.getElementById('root')
      );
    };

    render();
    store.subscribe(render);
    三、基本概念
    3.1store
    Store 就是保存数据的地方,整个应用只能有一个 Store
     import{createStore} from 'redux';
    const store=createStore(reducer);
    其中,createStore接受另一个函数做参数生成store,reducer接收当前state和action生成新的state
    3.2state
    此时的state可以通过store.getState()得到
    import {createStore} from 'redux';
    const store=createStore(reducer);
    const state=store.getState();
    一个state对应一个view。
    3.3action
    state的变化会导致view的变化,view的变化也会导致state的变化。action就是view发出的通知
    action是一个对象,其中type属性是必须的。view有多少种操作,就有多少种action。
    3.4store.dispatch()
    store.dispatch()是view发出action的唯一方法,接收一个action对象作为参数。
    3.5store.subscribe()
    store使用store.subscribe()监听函数。一旦state发生变化就自动执行这个函数。
    所以,只要把view的更新函数(即组件的render()或者setState()放入listen),就会实现view的自动渲染。
    store.subscribe()方法返回一个函数,调用这个函数就可以解除监听。
    3.6combineReducers()
    这个方法可以将多个reducer函数合成一个大的reducer
    import {combineReducers} from 'redux';
    const charReducer=combineReducers({
      chatLog,
      userName
    })
    参考:http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html
  • 相关阅读:
    react 实现路由按需加载
    vue-router 与 react-router 设计理念上的区别
    create-react-app 知识点
    ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
    create-react-app 搭建的项目中,让 antd 通过侧边栏导航 Menu 的 Menu.Item 控制 Content 部分的变化
    react-router v4.0 知识点
    prop-types:该第三方库对组件的props中的变量进行类型检测
    002_mtr_a network diagnostic tool
    006_netstat中state详解
    003_监测域名证书过期时间
  • 原文地址:https://www.cnblogs.com/cdx0/p/redux1.html
Copyright © 2020-2023  润新知