详解react-router-dom v6版本基本使用介绍

 更新时间:2022年03月11日 09:13:35   作者:Rise_11  
本文主要介绍了react-router-dom v6版本基本使用介绍,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Routes

  • 代替Switch组件,不会向下匹配
  • 用来包裹Route

Route

  • 必须被Routes组件包裹
  • component属性变成element
  • caseSensitive 路径大小写敏感属性,默认是不敏感(访问/about = /ABOUT)
  • index 与path属性是互斥的,index表示为当前路由的根
  • 可以用作layout组件,不写element属性,写了要与 Outlet组件配合使用(嵌套路由)
        <Routes>
          <Route path='/home' element={<Home />}></Route>
          <Route path='/about' element={<About />} caseSensitive={false} />
        </Routes>

        <Route path='/user'>
            <Route index element={<h1>user~</h1>} />
        </Route>

Navigate

  • 用来代替Redirect组件
  • replace属性 跳转模式 "PUSH" | "REPLACE"
  • 只要这个组件一渲染就会发生跳转
        <Routes>
          <Route path='/home' element={<Home />}></Route>
          <Route path='/about' element={<About />} caseSensitive={false} />
          <Route path='*' element={<Navigate to='/home' />} />
        </Routes>

NavLink

  • className,自定义激活时的样式名 可以为字符串或者函数
  • end 匹配子路由时是否高亮
  • caseSensitive 代表匹配路径时是否区分大小写

useRoutes

用来管理路由表,相比v5,可能需要借助一些第三方库来实现路由config管理,现在v6版本自带

const routes = useRoutes([
    {
      path: '/home',
      element: <Home />
    },
    {
      path: '/about',
      element: <About />
    },
    {
      path: '*',
      element: <Navigate to='/home' />
    },
    {
      path: '/user',
      children: [
        {
          index: true,
          element: <h1>user~</h1> // 这种不属于嵌套路由,这里面children会防到父亲的位置,所以不需要配合Outlet组件使用
        }
      ]
    }
  ])

嵌套路由

嵌套路由一般是配合 Outlet 组件使用,此组件类似于Vue的router-view组件,告知子路由应该渲染在什么位置

{
      path: '/home',
      element: <Home />, // 这种才属于嵌套路由
      children: [
        {
          path: 'message',
          element: <Message />
        },
        {
          path: 'article',
          element: <Article />
        }
      ]
}

在Home组件中使用<Outlet/>才能渲染子路由

      <div style={{ marginTop: '48px' }}>
        <div className='nav'>
          <div className='nav-item'>
            <NavLink to='/home/message'>message</NavLink>
          </div>
          <div className='nav-item'>
            <NavLink to='/home/article'>article</NavLink>
          </div>
          <div style={{ marginTop: 36 }}>
            <Outlet />
            {/* {outlet} */}
          </div>
        </div>
      </div>

路由传参

  • params传参(useParams)
  • search参数传参(useSearchParams)
  • state传参 (useLocation,获取v5版本的location对象,如果直接输入可能state为null)

编程式导航

useNavigate

const navigate = useNavigate()

navigate('detail3', {

state: {

id: *item*.id,

content: *item*.content,

title: *item*.title

}

})

<button *onClick*={() => navigate(-1)}>back</button> 返回上一页

<button *onClick*={() => navigate(1)}>go</button> 前进

其他一些hooks

  • useInRouterContext 判断组件是否被Router包裹,可能有些第三方组件需要判断
  • useNavigationType 返回用户到当前页面的导航类型 "POP" | "PUSH" | "REPLACE";
    • 注意 POP是指在浏览器直接打开了这个路由组件(刷新页面)
  • useOutlet 返回嵌套的路由,可以代替Outlet组件
  • useResolvedPath 给定一个url,解析出path,hash,search(location对象)

 到此这篇关于详解react-router-dom v6版本基本使用介绍的文章就介绍到这了,更多相关react-router-dom v6使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React-Router v6实现页面级按钮权限示例详解

    React-Router v6实现页面级按钮权限示例详解

    这篇文章主要介绍了使用 reac+reactRouter来实现页面级的按钮权限功能,这篇文章分三部分,实现思路、代码实现、踩坑记录,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2023-10-10
  • react-diagram 序列化Json解读案例分析

    react-diagram 序列化Json解读案例分析

    今天带来大家学习react-diagram 序列化Json解读的相关知识,本文通过多种案例给大家分析序列化知识,通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2021-05-05
  • React跨路由组件动画实现

    React跨路由组件动画实现

    在 React 中路由之前的切换动画可以使用 react-transition-group 来实现,但对于不同路由上的组件如何做到动画过渡是个很大的难题,目前社区中也没有一个成熟的方案,本文给大家分享React跨路由组件动画实现,感兴趣的朋友一起看看吧
    2023-10-10
  • 基于react组件之间的参数传递(详解)

    基于react组件之间的参数传递(详解)

    下面小编就为大家带来一篇基于react组件之间的参数传递(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • react-router 路由切换动画的实现示例

    react-router 路由切换动画的实现示例

    这篇文章主要介绍了react-router 路由切换动画的实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • react的ui库antd中form表单使用SelectTree反显问题及解决

    react的ui库antd中form表单使用SelectTree反显问题及解决

    这篇文章主要介绍了react的ui库antd中form表单使用SelectTree反显问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • React文件名和目录规范最佳实践记录(总结篇)

    React文件名和目录规范最佳实践记录(总结篇)

    React在使用时非常灵活,如果没有一个规范约束项目,在开发过程中会非常混乱,本文将介绍几个优秀的规范,介绍文件名和目录前,需要先简述一下几种通用的类型,用来区分文件的功能,感兴趣的朋友一起看看吧
    2022-05-05
  • React 状态管理工具优劣势示例分析

    React 状态管理工具优劣势示例分析

    这篇文章主要为大家介绍了React 状态管理工具优劣势示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 使用React实现内容滑动组件效果

    使用React实现内容滑动组件效果

    这篇文章主要介绍了使用React实现一个内容滑动组件效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • React中Suspense及lazy()懒加载及代码分割原理和使用方式

    React中Suspense及lazy()懒加载及代码分割原理和使用方式

    这篇文章主要介绍了React中Suspense及lazy()懒加载及代码分割原理和使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论