我正在使用React和Vite创建微前端.我很难完成我想要的路由.
path | page |
---|---|
'/' |
host-app homepage |
'/some-tenant' |
remote-app TenantPage |
'/some-tenant/some-subscription' |
remote-app SubscriptionPage |
当运行主机应用程序时,我导航到"/some-tenant"
,什么也不会出现.当我导航到"/some-tenant/some-sub"
时,TenantPage
个负载."/tenant/sub/test"
加载SubscriptionPage
.
我try 了一些方法来让它正常工作,但棘手的部分是我想在独立运行远程应用程序时使用相同的路由.有什么 idea 如何完成both吗?这是一个用于重新创建该问题的存储库.https://github.com/lestersconyers/react-routes/
摘录供参考
主机应用程序.tsx
const RemoteRootApp = lazy(() => import('remoteApp/RemoteRootApp') as any);
function App() {
return (
<div className="app">
<React.Suspense fallback="Loading">
<Routes>
<Route path="/" element={<HomePage />} />
<Route path=":tenant" element={<RemoteRootApp />} />
<Route path=":tenant/*" element={<RemoteRootApp />} />
</Routes>
</React.Suspense>
</div>
)
}
远程应用程序App.tsx
function App() {
return (
<div className="app">
<Routes>
<Route path=":tenant" element={<TenantPage />} />
<Route path=":tenant/:subscription" element={<SubscriptionPage />} />
<Route
path=":tenant/:subscription/manage"
element={<ManageSubscriptionPage />}
/>
</Routes>
</div>
)
}
remote-app main.tsx
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
)