umijs / umi

A framework in react community ✨
https://umijs.org
MIT License
15.42k stars 2.66k forks source link

[Bug] umimax + qiankun 子应用通过路由绑定引入 无法显示 #11686

Closed lis-soft closed 1 year ago

lis-soft commented 1 year ago

主应用和子应用都是通过umimax 创建,通过路由绑定引入子应用如果不能 * 通配的方式 ,子应用加载成功但无法显示,下面是复现代码

复现仓库地址 :https://gitee.com/leeSn6/umimax-qiankun clone地址: https://gitee.com/leeSn6/umimax-qiankun.git

image

lis-soft commented 1 year ago

image

fz6m commented 1 year ago
// routes

  {
    name: '低代码平台',
    path: '/low-code',
    component: '@/components/LowCode',
    routes: [
      {
        name: '渲染器',
        path: '/low-code/home',
      },
      {
        name: '编辑器',
        path: '/low-code/editor',
      },
    ],
  },
// src/components/LowCode/index.tsx

import { MicroApp, useRouteProps } from '@umijs/max';

export default function Page() {
  const props = useRouteProps();

  return <MicroApp name="low-code" url={props.path} />;
}
lis-soft commented 1 year ago
// routes

  {
    name: '低代码平台',
    path: '/low-code',
    component: '@/components/LowCode',
    routes: [
      {
        name: '渲染器',
        path: '/low-code/home',
      },
      {
        name: '编辑器',
        path: '/low-code/editor',
      },
    ],
  },
// src/components/LowCode/index.tsx

import { MicroApp, useRouteProps } from '@umijs/max';

export default function Page() {
  const props = useRouteProps();

  return <MicroApp name="low-code" url={props.path} />;
}

按您的修改了,还是提示no routes ,已提交gitee

fz6m commented 1 year ago

修正 src/components/LowCode/index.tsx 为以下内容即可:

import { MicroApp } from '@umijs/max';

export default function Page() {
  return <MicroApp name="low-code" base='/low-code' />;
}

参考 组件引入子应用

lis-soft commented 1 year ago

修正 src/components/LowCode/index.tsx 为以下内容即可:

import { MicroApp } from '@umijs/max';

export default function Page() {
  return <MicroApp name="low-code" base='/low-code' />;
}

参考 组件引入子应用

感谢,已经可以了,但是我想通过 路由匹配引入子应用的方式 替代上面的方案,能实现吗

fz6m commented 1 year ago

路由匹配引入子应用的方式 是啥意思,你可以在路由表里添加一些自定义键值对,然后用 useRouteProps 取出来放到 <MicroApp name={props.microAppName} base={props.microAppBase} /> 做到这个子应用展示区域的通用化。

lis-soft commented 1 year ago

路由匹配引入子应用的方式 是啥意思,你可以在路由表里添加一些自定义键值对,然后用 useRouteProps 取出来放到 <MicroApp name={props.microAppName} base={props.microAppBase} /> 做到这个子应用展示区域的通用化。

好的,感谢