react-router-dom 简单使用

项目创建完成后,需要使用 router 时,react-router-dom 提供了 router 服务

1. 下载安装 react-router-dom

npm install --save react-router-dom

yarn add react-router-dom

如果使用 Typescript ,需要安装一个 react-router-dom 的声明文件,vscode 会有提示
yarn add @type/react-router-dom

2. 组件引用 react-router-dom

在下载安装完毕后,就可以在组件中引入使用了
在App.js 或 App.txs 文件中引入

import { Route, Link, BrowserRouter, Redirect } from 'react-router-dom'

<Redirect to='/' /> 重定向到 Home 页

2.1 编写一级路由
import * as React from 'react'
import { Route, Link, BrowserRouter, Redirect } from 'react-router-dom'
import Home from './pages/Home'
import List from './pages/List'
import './App.css';
class App extends React.Component {

    public state = {
        // 路由数据
        routeList: [
            { path: '/', title: 'Home', exact: true, component: Home },
            { path: '/List/', title: 'List', exact: false, component: List },
        ]
    }
    render() {
        return (
            <BrowserRouter>
                {/* <Redirect to='/' /> 重定向到 Home 页 */}
                <Redirect to='/' />
                <div className='mainDiv'>
                    <div className='leftNav'>
                        {/* 遍历路由数据 */}
                        <ul>
                            {
                                this.state.routeList.map((item: any, index: number) => (
                                    <li key={index}><Link to={item.path}>{item.title}</Link></li>
                                ))
                            }
                        </ul>
                    </div>
                    <div className='rightMain'>
                        {
                            this.state.routeList.map((item: any, index: number) => (
                                <Route
                                    key={index}
                                    path={item.path}
                                    exact={item.exact}
                                    component={item.component}
                                />
                            ))
                        }
                    </div>
                </div>
            </BrowserRouter>
        )
    }
}
export default App

简单的 App 组件一级路由就完成了

这里使用遍历的方式动态渲染所有一级路由,可以方便维护

2.2 编写二级路由

大部分项目都会涉及到多级路由等路由嵌套问题,可有在一级路由的基础上,再编写二级路由
文件层级:
在这里插入图片描述
这里以 List.tsx 文件为二级路由文件

import React, { Component } from 'react'
import { Route, Link } from 'react-router-dom'
import Index from './List/Index';
import ReactPage from './List/ReactPage';
export default class List extends Component {
    render() {
        return (
            <div>
                <div className='topNav'>
                    <ul>
                        {/* 注意:此处路径,Link 中的 to= ,
                        和 Route 中的 path= 必须一样,
                        要么都有后缀,要么都没有,不然无法显示 */}
                        <li> <Link to='/List/Index'>Index</Link> </li>
                        <li> <Link to='/List/ReactPage.tsx'>ReactPage</Link> </li>
                    </ul>
                </div>
                <div className='videoContent'>
                    <div><h3>List function</h3></div>
                    <Route path='/List/Index' component={Index} />
                    <Route path='/List/ReactPage.tsx' component={ReactPage} />
                </div>
            </div>
        )
    }
}

注意:此处路径,Link 中的 to= ,和 Route 中的 path= 必须一样,要么都有后缀,要么都没有,不然无法显示。

当然同样也可以用遍历的形式展示

react-router-dom 完整项目:
https://github.com/Shay-Cormac/react-router

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值