qq_41414871 2023-10-09 13:40 采纳率: 0%
浏览 13

umijs 动态渲染路由出错,如何解决?

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'),排查了错误原因,是因为在渲染这个组件的时候出错的

img

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-10 18:37
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    根据错误信息"Cannot read properties of null (reading 'useContext')",问题可能出现在使用useContext时出错。处理动态渲染路由报错的问题,可以尝试以下解决方法:

    1. 确保项目中已经安装了umi和react,并且版本兼容。

    2. 检查是否正确导入了React和useContext。

    3. 确保组件中正确使用了useContext。如果存在多个useContext,可以分别确认每个useContext是否正确使用,并逐个排除可能出错的useContext。

    4. 检查组件的依赖项是否正确导入和引用。确保路径正确,并且组件可以被正确导入。

    5. 检查是否存在其他错误或警告,并进行逐个排查。

    除此之外,根据提供的代码和错误信息有限,很难确定具体导致问题的原因。如果上述方法无效,建议进行更详细的调试,可以在代码中添加console.log语句,打印出更多的调试信息,以便进一步分析和解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月9日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见