React Router 6 路由重定向与编程式导航指南

在 React Router 6 中,你可以使用 Navigate 组件、useNavigate hook 来实现路由重定向。下面是一些常见的重定向场景以及对应的实现方式:

一.使用 Navigate 组件

  1. 从一个路由重定向到另一个路由

你可以在路由配置中使用 Navigate 组件作为某个路由的元素。例如:

import {
    Navigate } from 'react-router-dom';

const routes = [
  {
   
    path: '/old-path',
    element: <Navigate to="/new-path" replace />,
  },
  {
   
    path: '/new-path',
    element: <NewPathComponent />,
  },
];

在这个例子中,当用户访问 /old-path 时,它会自动重定向到 /new-path,并渲染 NewPathComponentreplace 参数用于控制是替换当前历史记录还是在历史记录中添加一个新条目。

  1. 根据条件重定向

你可以使用条件渲染来根据特定条件决定是否重定向。例如,根据用户是否已经认证来决定是否重定向到登录页面:

import {
    Navigate, Outlet } from 'react-router-dom';
import {
    useAuth } from './auth';

const ProtectedRoute =
React路由重定向是通过使用Redirect组件来实现的。在React中,我们可以使用render属性来指定要渲染的内容。通过将Redirect组件放置在一个Route组件内部,并将to属性设置为要重定向路由地址,就可以实现路由重定向的功能。例如,在下面的代码中,当访问根路径"/"时,将会进行路由重定向,跳转到"/home"路由。 ```javascript import { BrowserRouter as Router, Route, Redirect } from "react-router-dom"; import Home from "./pages/Home"; import CityList from "./pages/CityList"; function App() { return ( <Router> <div className="App"> {/* 默认路由,实现路由重定向 */} <Route exact path="/" render={() => <Redirect to="/home" />} /> <Route path="/home" component={Home} /> <Route path="/citylist" component={CityList} /> </div> </Router> ); } export default App; ``` 这样,当进入页面时,默认路由重定向到"/home",然后匹配到Home组件进行渲染。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [react路由重定向](https://blog.csdn.net/weixin_43131046/article/details/120565092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [<React-Router>超全react路由知识点(跳转、传参、子路由重定向等)](https://blog.csdn.net/m0_48465196/article/details/129184085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值