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};