5.react-router-dom v6使用useRoutes踩坑点

useRoutes的用法

1.路由表 需要用.tsx或.jsx,否则使用Home赋值给element会报错

import React,{lazy} from "react";
import {RouteObject,Navigate} from "react-router-dom"
//使用懒加载
const Home = lazy(() => import('../pages/home/index'))
const My = lazy(() => import('../pages/my/index'))

const routes:RouteObject[]=[//使用路由表的类型
	{
        path:'/',
        element:<Navigate to='/home'/>//根目录自动渲染home页面
    },
    {
        path:'/home',
        element:<Home/>
    },
    {
        path:'/my',
        element:<My/>
    }
]

export default routes;

2.useRoutes()生成路由

1)使用useRoutes生成路由组件,再放进BrowserRouter,否则会报错
const GetRoutes = () => useRoutes(routes)

2)需要引入Suspense包裹BrowserRouter,否则路由未加载,页面会报错

import { useEffect, useState, Suspense } from 'react'
import { useRoutes } from 'react-router-dom';
import { BrowserRouter, NavLink } from 'react-router-dom';

const BasicLayout: React.FC = () => {
    const GetRoutes = () => useRoutes(routes)
    useEffect(() => {
        let list: TabListType = [
            {
                title: '首页',
                path: '/home',
                icon: 'iconW_home',
                activeIcon: 'icon_xuanz_home'
            },
          	...
        ]
        setTabList(list)
    }, [])

    return (
        <ConfigProvider>
            <Suspense>
                <BrowserRouter>
                    <div className="app-container">
                        <Layout className='app-container-layout flex column justify-between'>
                            <Content className='app-content'>
                                <GetRoutes></GetRoutes>
                            </Content>
                            <Footer className='app-footer flex justify-between align-center'>
                                {
                                    tabList.map((item, index) => {
                                        return (
                                            <NavLink key={index} to={item.path} className={({ isActive }) => (isActive ? 'tab-item active' : 'tab-item')}>
                                                <Image preview={false} width={20} src={`${iconPath}${item.icon}.svg`}></Image>
                                                <span>{item.title}</span>
                                            </NavLink>
                                        )
                                    })
                                }
                            </Footer>
                        </Layout>
                    </div>
                </BrowserRouter>
            </Suspense>
        </ConfigProvider>
    )
}

export default BasicLayout;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React Router DOM v6 是一个用于 React 应用程序的路由库。它提供了一种在应用程序中进行页面导航和管理的方式。 下面是一个简单的使用教程来帮助你开始使用 React Router DOM v6: 1. 安装 React Router DOM v6: ```shell npm install react-router-dom@next ``` 注意:v6 目前仍然是预发布版本,所以需要添加 `@next` 后缀来安装最新版本。 2. 在你的应用程序的入口文件(通常是 `index.js`)中导入所需的组件: ```jsx import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; ``` 3. 使用 `Router` 组件将你的应用程序包裹起来,并定义你的路由规则: ```jsx ReactDOM.render( <Router> <Route path="/" component={App} /> </Router>, document.getElementById('root') ); ``` 这个例子中,所有匹配 `/` 路径的组件都将渲染 `App` 组件。 4. 在你的应用程序的其他组件中使用 `Link` 组件来创建导航链接: ```jsx import { Link } from 'react-router-dom'; function Navigation() { return ( <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/contact">Contact</Link> </li> </ul> </nav> ); } ``` 这个例子中,点击链接将会导航到对应的路径。 5. 在你的应用程序的其他组件中使用 `Route` 组件来定义不同路径下的组件渲染: ```jsx import { Route } from 'react-router-dom'; function App() { return ( <div> <h1>My App</h1> <Route exact path="/" component={HomePage} /> <Route path="/about" component={AboutPage} /> <Route path="/contact" component={ContactPage} /> </div> ); } ``` 这个例子中,`HomePage` 组件将会在 `/` 路径下渲染,`AboutPage` 组件将会在 `/about` 路径下渲染,`ContactPage` 组件将会在 `/contact` 路径下渲染。 这只是 React Router DOM v6 的一些基本用法,还有很多其他功能和概念可以学习。你可以查阅官方文档以获取更多详细的信息和示例代码:https://reactrouter.com/docs/en/v6

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值