ant design pro v4 menu request data

1.model Folder New menu.ts

import { getMenuData } from '@/services/menu'; // 通过后台返回特定的数组json或者mock模拟数据
import { Reducer } from 'redux';
import { Effect } from './connect';

export interface MenuModelState {
    menuData: any[];
}

export interface MenuModelType {
    namespace: 'menu';
    state: MenuModelState;
    effects: {
        getMenuData: Effect;
    };
    reducers: {
        save: Reducer<MenuModelState>;
    };
}

const MenuModel: MenuModelType = {
    namespace: 'menu',
    state: {
        menuData: [],
    },
    effects: {
        *getMenuData({ payload, callback }, { call, put }) {
            const response = yield call(getMenuData);
            yield put({
                type: 'save',
                payload: response.data.menuData,
            });
        },
    },

    reducers: {
        save(state, action) {
            return {
                ...state,
                menuData: action.payload || [],
            };
        },
    },
};
export default MenuModel;

2. Open layouts and in which BasicLayout.tsx menuData new methods in the new request menu useState Interface

export default connect(({ global, settings,menu }: ConnectState) => ({
    collapsed: global.collapsed,
    settings,
    menuData: menu.menuData, 
}))(BasicLayout);
    useState(() => {
        if (dispatch) {
            dispatch({
                type: 'user/fetchCurrent',
            });
            dispatch({
                type: 'settings/getSetting',
            });
            dispatch({
                type: 'menu/getMenuData',
            });
        }
    });

Guess you like

Origin blog.csdn.net/weixin_34175509/article/details/91007747