redux 用法

import {connect} from 'react-redux';

import {bindActionCreators} from 'redux';

import {sidebarMenuClickCreator, updateHasDashBoardsCreator} from '@/redux/sidebar';

--------------------------------------------------------------------

//调用 props.updateHasDashBoards(true);

//分发

const mapDispatchToProps = (dispatch) => {

    return {

        onMenuClick: bindActionCreators(sidebarMenuClickCreator, dispatch),

        updateHasDashBoards: bindActionCreators(updateHasDashBoardsCreator, dispatch),

    };

};

//获取

const mapStateToProps = (state) => {

    return {

        hasDashBoards: state.Sidebar.hasDashBoards,

        currentRoute: state.Router.currentRoute,

        currentMenu: state.MainMenu.currentMenu,

    };

};

// 不需要从state中获取什么, 所以传一个null

export default connect(mapStateToProps, mapDispatchToProps)(SideBar);

 '@/redux/sidebar';文件
/* 定义action creator */

export const sidebarMenuClickCreator = (currentPaths) => {

  return {type: 'MENU_CLICK', payload: currentPaths};

};

export const updateHasDashBoardsCreator = (hasDashBoards) => {

  return {type: 'UPDATE_HAS_DASHBOARD', payload: hasDashBoards};

};

/* 定义初始状态, 每个组件只需要关心自己的状态 */

const initState = {

  currentPaths: "",

  hasDashBoards:true,

};

/* 定义reducer, 每个组件只有一个reducer */

const reducer = (state = initState, action = {}) => {

  switch (action.type) {

    case 'MENU_CLICK':

      return {...state, currentPaths: action.payload};

    case 'UPDATE_HAS_DASHBOARD':

      return {...state, hasDashBoards: action.payload};

    default: // 注意必须要有default语句

      return state;

  }

};

/* 导出的字段名称固定, 方便后续的store去处理 */

export default {initState, reducer};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容