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)

  

posted on 2019-05-29 17:00  沉默的末1993  阅读(104)  评论(0编辑  收藏  举报