React-router6的路由表+嵌套路由详解

1.下载6版本的react-router-dom
 yarn add react-router-dom
3.创建路由表
//在src目录下建立一个文件夹routes,在该目录下新建一个index.js,随后写下自己需要的路由组件
import { Navigate } from 'react-router-dom'
import Home from '../pages/Home'
import About from '../pages/About'

const indexRouter =  [
  {
    path: '/about',
    //这里是你需要的路由组件
    element: <About />
  },
  {
    path: '/home',
    element: <Home />
  },
    //使用Navigate进行重定向
  {
    path: '/',
    element: <Navigate to='/about' />
  }
]

export default indexRouter
4.在页面下进行引入并展示
import indexRouter from './routes'
//在function定义
const elementRoute = useRoutes(indexRouter)
//在页面引入
<div className="panel-body">
  {elementRoute}
</div>
5.页面代码
import React from 'react'
import { NavLink, useRoutes,} from 'react-router-dom'
import indexRouter from './routes'
import './App.css'

export default function App() {
  function active({isActive}) {
    return  isActive ? 'back' : '' 
  }
  const elementRoute = useRoutes(indexRouter)
  return (
    <div>
      <div className="row">
        <div className="col-xs-offset-2 col-xs-8">
          <div className="page-header"><h2>React Router Demo</h2></div>
        </div>
      </div>
      <div className="row">
        <div className="col-xs-2 col-xs-offset-2">
          <div className="list-group">
            <NavLink to='/about' className={active}>About</NavLink>
            <NavLink to='/home' className={active}>Home</NavLink>
          </div>
        </div>
        <div className="col-xs-6">
          <div className="panel">
            <div className="panel-body">
              {elementRoute}
            </div>
          </div>
        </div>
      </div>
    </div>
  )
}

6.嵌套路由

1.只要在根组件引用了路由就不用再子组件再次引用了(!!!切记)
2.嵌套路由
import { Navigate } from 'react-router-dom'
import Home from '../pages/Home'
import Message from '../pages/Message'
import News from '../pages/News'

const indexRouter =  [
  {
    path: '/home',
    element: <Home />,
      //加children进行嵌套
    children:[
      {
        path:'news',
        element:<News/>
      },
      {
        path:'message',
        element:<Message/>
      }
    ]
  },
  {
    path: '/',
    element: <Navigate to='/home' />
  }
]

export default indexRouter
2.在home.jsx操作
import React  from 'react'
//Outlet是嵌套路由的占位符
import { NavLink,Navigate, Outlet } from 'react-router-dom'


export default function Home() {
  return (
    <div>
      <h1>我是Home内容</h1>
      <ul>
      //嵌套路由千万不要加/ 
        <NavLink to='news'>News</NavLink>
        <NavLink to='message'>Message</NavLink>
      </ul>
//路由显示的位置就在这里
      <div>
        <Outlet/>
      </div>
    </div>
  )
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Router v6 中,路由表的定义方式有所改变。现在可以使用 `<Routes>` 组件来定义路由表,每个路由通过 `<Route>` 组件来定义。以下是一个示例路由表: ```jsx import { Routes, Route } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; function App() { return ( <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> ); } export default App; ``` 在上面的示例中,我们定义了三个路由:`/`,`/about` 和 `/contact`,每个路由都对应一个组件。 `<Routes>` 组件是路由表的根组件,它包含所有 `<Route>` 组件。 `<Route>` 组件的 `path` 属性指定了该路由的 URL 路径, `element` 属性指定了该路由对应的组件。 需要注意的是,`<Route>` 组件没有了 `component` 属性,这是因为在 React Router v6 中,路由组件不再是直接通过 `component` 属性指定,而是通过 `element` 属性指定。使用 `element` 属性可以让路由组件更加灵活,可以是一个组件、一个函数或一个 React 元素。如果需要传递 props 到路由组件,可以使用 `route` 属性,例如: ```jsx <Route path="/products/:id" element={<ProductDetails />} route={{ someProp: 'someValue' }} /> ``` 在 `ProductDetails` 组件中可以通过 `props.route.someProp` 来获取该值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值