umjs/max 渲染动态路由,报错Cannot read properties of null (reading 'useContext')
// app.tsx
export function patchClientRoutes({ routes }) {
const data =
[
{
"path": "/foo",
"type": "home",
"page": "/Home/index",
"id": 100,
"name": "foo"
},
{
"path": "/foo2",
"type": "home",
"page": "/Users/index",
"id": 100,
"name": "foo2"
}
]
data.forEach((route) => {
// const Page = React.lazy(() => import(`@/pages${route.page}`));
const Page = require(`@/pages${route.page}`).default
routes[0].routes.unshift({
path: route.path,
element: <Page />,
// parentId: "ant-design-pro-layout",
name: route.name
});
});
console.log(routes);
}
export function render(oldRender: () => void) {
oldRender();
}
// /Home/index.tsx
import { Button } from "antd";
import { getUserList } from "@/services/User/UserController";
import React from "react";
const HomePage: React.FC = () => {
return (
<PageContainer>
<div className={ styles.container }>
{/*<Guide name={ trim('react-umi') }/>*/}
<Button type={ 'primary' }>首页</Button>
</div>
</PageContainer>
);
};
export default HomePage;
// /Users/index
import { Button } from "antd";
import React from "react";
const Page: React.FC = () => {
return (
<div>
{/*<Guide name={ trim('react-umi') }/>*/}
<Button type={ 'primary' }>确定</Button>
</div>
)
}
export default Page;
运行结果及详细报错内容
切换路由到 /foo2 可以正常显示,但是切换到/foo 就会报错Cannot read properties of null (reading 'useContext'),排查了错误原因,是因为在渲染这个组件的时候出错的