![](/img/trans.png)
[英]React-Router-Dom v5 - Switch doesn't work with mapping array of Route components
[英]React router dom v5 default route doesn't work
我正在使用帶有材料 ui 的 react router dom v5,並且我的路線如下:
import React from 'react'
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import Layout from '../components/layout'
import Login from '../screens/Login'
import NotFound from '../screens/NotFound'
import routes from './routes'
const DynamicRoutes = () => {
return (
<>
{Object.values(routes).map(({ component, path }) => (
<Route exact path={path} key={path} component={component} />
))}
</>
)
}
const Router = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path="/login" component={Login} />
<Layout>
<DynamicRoutes />
</Layout>
<Route path="*" component={NotFound} />
</Switch>
</BrowserRouter>
)
}
export default Router
我已經嘗試過<Route component={NotFound} />
,但都沒有對我<Route component={NotFound} />
。 誰能幫我? 其余路線工作正常,但當我輸入假路線時,不會進入NotFound
屏幕。
這是因為<Switch>
所有子元素都應該是<Route>
或<Redirect>
元素。 您可以在 react-router-dom docs 中查看更多相關信息。
因此,您的代碼的一種解決方案是執行以下操作:
<BrowserRouter>
<Switch>
<Route exact path="/login" component={Login} />
{Object.values(routes).map(({ Component, path }) => (
<Route exact path={path} key={path}>
<Layout>
<Component />
</Layout>
</Route>
))}
<Route path="*" component={NotFound} />
</Switch>
</BrowserRouter>
*對於您的路由對象數組, Component 屬性必須帶有大寫C
。
您可以檢查此示例代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.