React Router路由

React Router目前已经发展到 6 这个版本。因为版本的更新使用法有了一些改变。记录整理一下:

什么是React Router

React Router是一个构建在React之上的强大的路由库。可以实现URL与网页上显示的数据保持同步。

安装

npm i react-router-dom

(从5开始就放弃原有的react-router,统一改为react-router-dom)

常见的API:

BrowserRouter、Link、Routes、Route、Outlet

BrowserRouter:

在 React Router 中,最外层的 API 通常就是用 BrowserRouter。BrowserRouter 的内部实现是用了 history 这个库和 React Context 来实现的,所以当你的用户前进后退时,history 这个库会记住用户的历史记录,这样需要跳转时可以直接操作。

BrowserRouter 使用时,通常用来包住其它需要路由的组件,所以通常会需要在你的应用的最外层用它

import React from 'react'
import { BrowserRouter as Router } from 'react-router-dom'

export default function NewsSandBox() {
  return (
      <Router>
          <p>Test</p>
      </Router>
  )
}

HashRouter:

作用与BrowserRouter一样,但是HashRouter修改的是地址栏的hash值

Routes:

v6版本移除了先前的Switch,引入新的替代者:Routes

Routes 是用来包住路由访问路径(Route)的,必须和<Route>配合使用。它决定用户在浏览器中输入的路径到对应加载什么 React 组件,因此绝大多数情况下,Routes 的唯一作用是用来包住一系列的 Route.

import React from 'react'
import { BrowserRouter as Router,Routes,Route } from 'react-router-dom'

export default function NewsSandBox() {
  return (
      <Router>
          <Routes>
            <Route path="/home" element={<Home />}></Route>
            <Route path="/user-manage/list" element={<UserList />}></Route>
            <Route path="/right-manage/role/list" element={<RoleList />}></Route>
            <Route path="/right-manage/right/list" element={<RightList />}></Route>
            {/* <Route path="/" element={<Navigate to="/home" />}></Route> */}
          </Routes>
        </Router>
  )
}

Route:

Route 是定义访问路径与组件之间的关系。

重定向:

<Route path="/" element={<Navigate to="/home" />}></Route>

NavLink:

作用与<Link>组件类似,且可实现导航的“高亮”效果

//NavLink默认类名是active

<NavLink
  to="login"
  className={({ isActive }) => {
    console.log('home',isActive)
    return isActive ? 'base one' : 'base'
}}
>login</NavLink>


//NavLink加上end属性,子级路由点击时高亮,其父级路由会取消高亮
<NavLink to="home" end></NavLink>

Navigate:

作用:只要<Navigate>组件被渲染,就会修改路径,切换视图

replace属性用于控制跳转模式,(push或replace,默认是push)

<Navigate to="/about" replace={true} />

Outlet:

当<Route>产生嵌套时,渲染其对应的后续子路由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值