![](/img/trans.png)
[英]React-Router-DOM: unable to render Link in the same page (component)
[英]Render Same Component With Multiple Paths React Router Dom
我一直在尋找從不同路徑渲染相同組件的最簡單方法。
我有以下內容,以便"/"
和"/login"
呈現登錄組件。
import React from "react";
import { Route, Switch, Redirect } from 'react-router-dom';
import './App.scss';
import Login from "../../login/Login";
const App = () => {
return (
<div className="App">
<div className="App-container">
<Switch>
<Route exact path={["/", "/login"]} component={() =>
<Login login={true} />}/>
<Redirect to="/" />
</Switch>
</div>
</div>
);
}
export default App;
這似乎確實有效,但是,它會在控制台中返回錯誤。
Warning: Failed prop type: Invalid prop 'path' of type 'array' supplied to 'Route', expected 'string'.
我正在努力做到這一點...
<Route exact path={"/"} component={() => <Login login={true} />}/>
<Route exact path={"/login"} component={() => <Login login={true} />}/>
但是使用更短的方法,這可能與react-router-dom
嗎? 任何幫助將不勝感激
您可以創建一個包含路徑/
和/login
的數組,並在該數組上使用map
為兩個路徑呈現相同的內容。
<Switch>
{["/", "/login"].map(path => (
<Route
key={path}
exact
path={path}
render={() => <Login login={true} />}
/>
))}
<Redirect to="/" />
</Switch>
如果您希望在多個路由上呈現相同的組件,您可以通過將路徑指定為正則表達式來實現
假設您想為“主頁”、“用戶”和“聯系人”組件顯示“主頁”組件,那么這里是代碼。
<Route path="/(home|users|contact)/" component={Home} />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.