zoukankan      html  css  js  c++  java
  • react-redux

    Redux

      state        只读对象,不能直接修改

      Reducer    对state进行修改

      action     描述用户行为,用于沟通组件和redux

    流程

      首先组件component中事件触发行为action,分发到reducer中,reducer根据传来的action对state进行处理,state在传递到组件中进行数据的修改

    使用react-redux

      1、安装

    yarn add redux --save
    yarn add react-redux --save
    

      2、src下创建文件夹redux,redux文件夹下创建文件夹action,action文件夹下创建index.js

    /**action 下 index.js**/
    /**描述事件的类型,可以单写一个文件里**/
    export const type={
      ACTION_TYPE:'ACTION_TYPE_VALUE'  
    }
    
    /**具体的action函数**/
    export function actionFun (param){
      return{
        type:type.ACTION_TYPE,
        param//用户触发行为传来的参数    
      }    
    }
    

      3、redux文件夹下创建文件夹reducer,reducer文件夹下创建index.js

    /**引入事件类型**/
    import {type} from '../action'
    /**初始化state**/
    const initialState={
      name:'val'
    }
    /**导出reducer**/
    export default (state=initialState,action){
      switch(action){
        case type.ACTION_TYPE:
          return{
            ...state,
            name:action.param
          }
          break;
        default:
          break;
      }
    }
    

      redux下创建store文件夹,store文件夹下创建index.js

    /**初始化store**/
    import { createStore } from 'redux'
    /**引入reducer对store操作**/
    import reducer from '../reducer'
    /**建立链接reducer**/
    export default ()=>createStore(reducer)
    

      

    根组件被Provider包着

    /**src 下的 index.js**/
    import { Provider } from 'redux'
    import configStore from 'url/redux/store'
    const store=configStore();
    
    
    
    <Provider store={store}>
        根组件
    </Provider>
    

      

    在组件中使用

        1、组件作为触发方

        

    /**通过connect建立于redux的链接**/
    import { connect } from 'react-redux'
    /**引入行为action,当事件触发,把action分发到reducer中**/
    import {actionName} from 'url/redux/action'
    组件:
        class ComponentName extends Component{
            handleClick=()=>{
                const {dispatch} = this.props;//建立连接后才可以使用
                dispatch(actionName(param))
            }
        }
        export dafault connect()(ComponentName)//建立链接
    

        2、组件引用redux中的数据

    import { connect } from 'react-redux'
    class ComponentName extends Component{
        {this.props.name}
    }
    const mapState=state=>{
        return {
            name:state.name
        }
    }
    export default connect(mapState)(ComponentName)
    

      

  • 相关阅读:
    Android Developer API Guides
    Ubuntu 12.04 下安装 VirtualBox
    C++的异常处理
    JZOJ 4246. 【五校联考6day2】san
    JZOJ 4245. 【五校联考6day2】er
    JZOJ 4244. 【五校联考6day2】yi
    JZOJ 4228. 【五校联考3day2】C
    JZOJ 4227. 【五校联考3day2】B
    JZOJ 4226. 【五校联考3day2】A
    JZOJ 4235. 序列
  • 原文地址:https://www.cnblogs.com/shui1993/p/10944860.html
Copyright © 2011-2022 走看看