diff --git a/packages/core/client/src/nocobase-buildin-plugin/index.tsx b/packages/core/client/src/nocobase-buildin-plugin/index.tsx index a4bb890862..f89f1797b2 100644 --- a/packages/core/client/src/nocobase-buildin-plugin/index.tsx +++ b/packages/core/client/src/nocobase-buildin-plugin/index.tsx @@ -300,7 +300,7 @@ export class NocoBaseBuildInPlugin extends Plugin { }); this.router.add('admin.page', { path: '/admin/:name', - Component: 'RouteSchemaComponent', + Component: 'AdminDynamicPage', }); } diff --git a/packages/core/client/src/route-switch/antd/admin-layout/index.tsx b/packages/core/client/src/route-switch/antd/admin-layout/index.tsx index bc20146f31..475ebd6f38 100644 --- a/packages/core/client/src/route-switch/antd/admin-layout/index.tsx +++ b/packages/core/client/src/route-switch/antd/admin-layout/index.tsx @@ -22,6 +22,7 @@ import { RemoteCollectionManagerProvider, RemoteSchemaTemplateManagerPlugin, RemoteSchemaTemplateManagerProvider, + RouteSchemaComponent, SchemaComponent, findByUid, findMenuItem, @@ -82,9 +83,11 @@ const MenuEditor = (props) => { const isMatchAdmin = useMatch('/admin'); const isMatchAdminName = useMatch('/admin/:name'); const defaultSelectedUid = params.name; + const isDynamicPage = !!defaultSelectedUid; const { sideMenuRef } = props; const ctx = useACLRoleContext(); const [current, setCurrent] = useState(null); + const onSelect = ({ item }) => { const schema = item.props.schema; setTitle(schema.title); @@ -116,7 +119,7 @@ const MenuEditor = (props) => { } // url 不为 `/admin/xxx` 的情况,不做处理 - if (!isMatchAdminName) return; + if (!isMatchAdminName || !isDynamicPage) return; // url 为 `admin/xxx` 的情况 const s = findByUid(schema, defaultSelectedUid); @@ -303,6 +306,11 @@ const AdminSideBar = ({ sideMenuRef }) => { ); }; +export const AdminDynamicPage = () => { + const params = useParams<{ name?: string }>(); + return ; +}; + export const InternalAdminLayout = () => { const result = useSystemSettings(); const { token } = useToken(); @@ -493,6 +501,6 @@ export class AdminLayoutPlugin extends Plugin { await this.app.pm.add(RemoteSchemaTemplateManagerPlugin); } async load() { - this.app.addComponents({ AdminLayout }); + this.app.addComponents({ AdminLayout, AdminDynamicPage }); } }