提交 72538401 作者: yueyang.lv

feat(menu): 菜单注入方式更换

菜单注入方式修改为使用 HOC 模式,定制更加灵活
上级 84bbaf41
...@@ -81,12 +81,12 @@ module.exports = function (config, env) { ...@@ -81,12 +81,12 @@ module.exports = function (config, env) {
// 'redux', // 'redux',
// 'redux-thunk', // 'redux-thunk',
"superagent", "superagent",
"react-router-dom", // "react-router-dom",
// 'use-debounce', // 'use-debounce',
// 'websocket', // 'websocket',
"chart.js", "chart.js",
]), ]),
...createShared(["react", "react-dom"]), ...createShared(["react", "react-dom", "react-router-dom"]),
}, },
}) })
); );
......
import { Suspense, lazy, useState, useEffect } from "react"; import React, { Suspense, lazy, useState, useEffect } from "react";
import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import LoadingComponent from "../common/LoadingComponent"; import LoadingComponent from "../common/LoadingComponent";
import history from "../history"; import history from "../history";
import MenuItem from "../screens/Console/Menu/MenuItem";
// import RemoteComponent from "./RemoteComponent"; // import RemoteComponent from "./RemoteComponent";
// import loadMenu from "saturn_tenant/menu"; // import loadMenu from "saturn_tenant/menu";
...@@ -12,6 +13,7 @@ const RemoteSaturnTenant = lazy(() => import("saturn_tenant/App")); ...@@ -12,6 +13,7 @@ const RemoteSaturnTenant = lazy(() => import("saturn_tenant/App"));
const RemoteSaturnTenantFullscreen = lazy( const RemoteSaturnTenantFullscreen = lazy(
() => import("saturn_tenant/AppFullscreen") () => import("saturn_tenant/AppFullscreen")
); );
const RemoteMenuContainer = lazy(() => import("saturn_tenant/MenuContainer"));
// const loadMenu = () => import("saturn_tenant/menu"); // const loadMenu = () => import("saturn_tenant/menu");
// console.log("loadMenu", loadMenu); // console.log("loadMenu", loadMenu);
...@@ -27,41 +29,61 @@ const RemoteSaturnTenantFullscreen = lazy( ...@@ -27,41 +29,61 @@ const RemoteSaturnTenantFullscreen = lazy(
/** 在 Layout 下展示的内容 */ /** 在 Layout 下展示的内容 */
export function SaturnTenant() { export function SaturnTenant() {
return ( return (
<div>
<Suspense fallback={<LoadingComponent />}> <Suspense fallback={<LoadingComponent />}>
<RemoteSaturnTenant history={history} /> <RemoteSaturnTenant history={history} />
</Suspense> </Suspense>
</div>
); );
} }
/** 全屏展示的内容 */ /** 全屏展示的内容 */
export function SaturnTenantFullscreen() { export function SaturnTenantFullscreen() {
return ( return (
<div>
<Suspense fallback={<LoadingComponent />}> <Suspense fallback={<LoadingComponent />}>
<RemoteSaturnTenantFullscreen history={history} /> <RemoteSaturnTenantFullscreen history={history} />
</Suspense> </Suspense>
</div>
); );
} }
/** 加载侧栏菜单 */ /** 全屏展示的内容 */
export function useSaturnConsoleMenu() { export function SaturnTenantMenuContainer({
const [menu, setMenu] = useState([]); children,
isOpen,
groupState,
}: {
children: React.ReactNode;
isOpen: boolean;
groupState: {
openGroup: string;
setOpenGroup: React.Dispatch<React.SetStateAction<string>>;
expandedGroup: string;
setExpandedGroup: React.Dispatch<React.SetStateAction<string>>;
};
}) {
return (
<Suspense fallback={<LoadingComponent />}>
<RemoteMenuContainer context={{ MenuItem, NavLink, isOpen, groupState }}>
{children}
</RemoteMenuContainer>
</Suspense>
);
}
useEffect(() => { // /** 加载一个函数方法 */
import("saturn_tenant/consoleMenu") // export function useSaturnConsoleMenu() {
.then((res) => { // const [menu, setMenu] = useState([]);
const createMenu = res.default;
createMenu(NavLink).then((menu) => {
setMenu(menu);
});
})
.catch((e) => {
console.error(e);
});
}, []);
return menu; // // useEffect(() => {
} // // import("saturn_tenant/consoleMenu")
// // .then((res) => {
// // const createMenu = res.default;
// // createMenu(NavLink).then((menu) => {
// // setMenu(menu);
// // });
// // })
// // .catch((e) => {
// // console.error(e);
// // });
// // }, []);
// return menu;
// }
...@@ -31,6 +31,7 @@ import { ...@@ -31,6 +31,7 @@ import {
import MenuItem from "./MenuItem"; import MenuItem from "./MenuItem";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
import history from "../../../history"; import history from "../../../history";
import { SaturnTenantMenuContainer } from "../../../saturnCloud";
const ConsoleMenuList = ({ const ConsoleMenuList = ({
menuItems, menuItems,
...@@ -85,6 +86,15 @@ const ConsoleMenuList = ({ ...@@ -85,6 +86,15 @@ const ConsoleMenuList = ({
}, },
}} }}
> >
<SaturnTenantMenuContainer
isOpen={isOpen}
groupState={{
openGroup,
setOpenGroup,
expandedGroup,
setExpandedGroup,
}}
>
<List <List
sx={{ sx={{
flex: 1, flex: 1,
...@@ -194,6 +204,7 @@ const ConsoleMenuList = ({ ...@@ -194,6 +204,7 @@ const ConsoleMenuList = ({
</ListItem> </ListItem>
</Box> </Box>
</List> </List>
</SaturnTenantMenuContainer>
</Box> </Box>
); );
}; };
......
...@@ -34,7 +34,6 @@ import MenuToggle from "./MenuToggle"; ...@@ -34,7 +34,6 @@ import MenuToggle from "./MenuToggle";
import ConsoleMenuList from "./ConsoleMenuList"; import ConsoleMenuList from "./ConsoleMenuList";
import { validRoutes } from "../valid-routes"; import { validRoutes } from "../valid-routes";
import { toLoginPage } from "../../../utils/toLogin"; import { toLoginPage } from "../../../utils/toLogin";
import { useSaturnConsoleMenu } from "../../../saturnCloud";
const drawerWidth = 245; const drawerWidth = 245;
...@@ -102,8 +101,6 @@ const Menu = ({ ...@@ -102,8 +101,6 @@ const Menu = ({
setMenuOpen, setMenuOpen,
features, features,
}: IMenuProps) => { }: IMenuProps) => {
const saturnMenu = useSaturnConsoleMenu();
const logout = () => { const logout = () => {
const deleteSession = () => { const deleteSession = () => {
clearSession(); clearSession();
...@@ -123,7 +120,6 @@ const Menu = ({ ...@@ -123,7 +120,6 @@ const Menu = ({
}); });
}; };
const allowedMenuItems = validRoutes(features, operatorMode); const allowedMenuItems = validRoutes(features, operatorMode);
allowedMenuItems.push(...saturnMenu);
return ( return (
<Drawer <Drawer
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论