我在我的 reactjs 應用程式中使用 react-router-dom,我在路由的末尾有這個塊,可以將所有錯誤的路徑重定向到這個:
<Route path="*">
<Redirect to="/dashboard" />
</Route>
但是每當我重新加載我網站上的任何頁面時,我都會被重定向到儀表板。這是錯誤的行為。我該如何解決?
uj5u.com熱心網友回復:
如果您使用的是 react-router-dom 版本 6,請嘗試這樣撰寫
<Routes>
<Route path="/" element={<Homepage />} />
<Route path="*" element={<ErrorPage />} />
</Routes>
uj5u.com熱心網友回復:
您可以使用最新版本的 react-router-dom 導航來重定向到不同的頁面。
import React, { Component } from 'react';
import Test_1 from './components/Test_1';
import Test_2 from './components/Test_2';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import { Navigate } from 'react-router-dom';
class App extends Component {
render() {
return (
<Router>
<Routes>
<Route path='/' element={<Test_1 />} />
<Route path='/home' element={<Test_2 />} />
<Route path='*' element={<Navigate to='/' />} />
</Routes>
</Router>
);
}
}
export default App;
uj5u.com熱心網友回復:
從您的描述看來,您正在將多個路由渲染到沒有Switch組件的路由器中。路由器包含匹配和呈現路由,而Switch 獨占匹配并呈現第一個Route或Redirect組件。換句話說,路由器將呈現所有匹配項,包括重定向,Switch只呈現第一個。
將您的路由包裝在 a 中Switch并將redirect最后一個放在串列中,這樣如果之前沒有匹配其他路由路徑,Redirect則將呈現。
<Switch>
... all other routes ...
<Redirect to="/dashboard" />
</Switch>
這個 OFC 假設您仍在使用react-router-domv5,因為您沒有提及任何Redirect組件匯入錯誤(Redirect已在 RRDv6 中洗掉)。如果不是這種情況,并且您實際上使用的是 RRDv6,請更新您的問題以包含更完整的代碼示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/419572.html
標籤:
