perf: add ErrorBoundary for routes

pull/90/head
moonrailgun 2 years ago
parent 32de5b17e5
commit f426d92a9f

@ -25,6 +25,7 @@ import isElectron from 'is-electron';
import { AppRouterApi } from './components/AppRouterApi';
import { DndProvider } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import { ErrorBoundary } from './components/ErrorBoundary';
const AppRouter: any = isElectron() ? HashRouter : BrowserRouter;
@ -114,36 +115,43 @@ export const App: React.FC = React.memo(() => {
<AppHeader />
<AppContainer>
<AppRouterApi />
<Routes>
<Route
path="/entry/*"
element={
<FallbackPortalHost>
<EntryRoute />
</FallbackPortalHost>
}
/>
<Route path="/main/*" element={<MainRoute />} />
<Route path="/panel/*" element={<PanelRoute />} />
<Route path="/invite/:inviteCode" element={<InviteRoute />} />
<Route
path="/plugin/*"
element={
<FallbackPortalHost>
{pluginRootRoute.map((r, i) => (
// NOTICE: Switch里不能出现动态路由
<Route
key={r.name}
path={r.path ? `/plugin${r.path}` : `/plugin/fallback${i}`}
element={React.createElement(r.component)}
/>
))}
</FallbackPortalHost>
}
/>
<ErrorBoundary>
<Routes>
<Route
path="/entry/*"
element={
<FallbackPortalHost>
<EntryRoute />
</FallbackPortalHost>
}
/>
<Route path="/main/*" element={<MainRoute />} />
<Route path="/panel/*" element={<PanelRoute />} />
<Route path="/invite/:inviteCode" element={<InviteRoute />} />
<Route
path="/plugin/*"
element={
<FallbackPortalHost>
{pluginRootRoute.map((r, i) => (
// NOTICE: Switch里不能出现动态路由
<Route
key={r.name}
path={
r.path ? `/plugin${r.path}` : `/plugin/fallback${i}`
}
element={React.createElement(r.component)}
/>
))}
</FallbackPortalHost>
}
/>
<Route path="/*" element={<Navigate to="/entry" replace={true} />} />
</Routes>
<Route
path="/*"
element={<Navigate to="/entry" replace={true} />}
/>
</Routes>
</ErrorBoundary>
</AppContainer>
</AppProvider>
);

Loading…
Cancel
Save