Closed LiangGu closed 3 years ago
{
"dependencies": {
"@ant-design/charts": "^1.0.21",
"@ant-design/icons": "^4.0.0",
"@ant-design/pro-card": "^1.10.6",
"@ant-design/pro-descriptions": "^1.2.0",
"@ant-design/pro-form": "^1.3.0",
"@ant-design/pro-layout": "^6.9.0",
"@ant-design/pro-list": "^1.5.14",
"@ant-design/pro-table": "2.35.1",
"@umijs/plugin-openapi": "^1.0.1",
"@umijs/route-utils": "^1.0.33",
"antd": "^4.13.0",
"classnames": "^2.2.6",
"electron": "^12.0.5",
"fetch-jsonp": "^1.1.3",
"initial-state": "^0.2.0",
"jsencrypt": "3.2.0",
"less": "^4.1.1",
"lodash": "^4.17.11",
"moment": "^2.25.3",
"omit.js": "^2.0.2",
"qs": "^6.9.0",
"react": "^17.0.0",
"react-dev-inspector": "^1.1.1",
"react-dom": "^17.0.0",
"react-helmet-async": "^1.0.4",
"umi": "^3.3.9",
"umi-request": "^1.0.8"
},
"devDependencies": {
"@ant-design/pro-cli": "^2.0.2",
"@types/classnames": "^2.2.7",
"@types/express": "^4.17.0",
"@types/history": "^4.7.2",
"@types/jest": "^26.0.0",
"@types/lodash": "^4.14.144",
"@types/qs": "^6.5.3",
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
"@types/react-helmet": "^6.1.0",
"@umijs/fabric": "^2.5.2",
"@umijs/plugin-blocks": "^2.0.5",
"@umijs/plugin-esbuild": "^1.0.1",
"@umijs/preset-ant-design-pro": "^1.3.0",
"@umijs/preset-dumi": "^1.1.0-rc.6",
"@umijs/preset-react": "^1.7.4",
"@umijs/yorkie": "^2.0.3",
"carlo": "^0.9.46",
"cross-env": "^7.0.0",
"cross-port-killer": "^1.1.1",
"detect-installer": "^1.0.1",
"enzyme": "^3.11.0",
"eslint": "^7.1.0",
"express": "^4.17.1",
"gh-pages": "^3.0.0",
"jsdom-global": "^3.0.2",
"lint-staged": "^10.0.0",
"mockjs": "^1.0.1-beta3",
"prettier": "^2.0.1",
"puppeteer-core": "^5.0.0",
"stylelint": "^13.0.0",
"typescript": "^4.0.3",
"xlsx": "^0.16.9"
},
}
依赖版本 @chenshuai2144 麻烦再看一下 ,辛苦了
以下的 Issues 可能会帮助到你 / The following issues may help you
- [#8500][🐛[BUG] “菜单的高级用法” params 更新了,但request方法未调用][100%]
这个 #8500 就是我发的,有些问题,所以取消重发一次
@chenshuai2144
initialState是个对象,这样应该监听不到变化,可以写成{...initialState}试试
但menu.request仍然没有触发
@fangqibin 使用了{ ...initialSate },效果还是一样
用 currentUser 呢,diff 算法是这样的
// params 更新的时候重新请求
useEffect(() => {
if (!preMenu) {
return;
}
mutate(defaultId);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [defaultId, menu?.params])
会在登录时取一次User信息,将信息存入initialState后,每次页面刷新都会取一次User信息。
export const layout: RunTimeLayoutConfig = ({ initialState }) => {
return {
// actionRef: layoutActionRef,
menu: {
params: {
userId: initialState?.currentUser?.userId,
},
request: async (params:any, defaultMenuData:any) => {
let menu:MenuDataItem[] = defaultMenuData;
await queryMenuData({ appId: constants.APP_ID }).then((res)=>{
menu = loopMenuItem(menuDecorator(res.data));
});
return menu;
}
},
// menuDataRender: (menuData) => Object.assign(initialState?.menuData??menuData),
rightContentRender: () =>
@chenshuai2144
menu?.params 其实每次都不一样,因为是个 obj ,我修一下
🐛 bug 描述
使用了“菜单的高级用法”的第一种后台取菜单数据方法 params 更新了,但request方法未调用
📷 复现步骤
🏞 期望结果
登录成功后,取得菜单数据让页面可以正常使用。
💻 复现代码
© 版本信息 Ant Design Pro 版本: [e.g. 5.0.0] umi 版本 浏览器环境 开发环境 [e.g. windows 10]
🚑 其他信息