react配置路由 react-route-dom 6.10.0

使用的是react-route-dom 6.10.0版本

react-route-dom提供的相关路由容器有 <BrowserRouter>、<HashRouter>

BrowserRouter:history模式

HashRouter:hash模式

注意:<BrowserRouter>、<HashRouter>组件最好放在最顶层的组件之外

<Route>定义具体的组件

用法:<Route path='路由rul' element={ <组件名 />}  />

例如:

<Route path='/login' element={<Login/>}/>
//Login为引入的组件

Route要求要包含在Routes组件当中

即:

        <Routes>
            <Route path='/' element={<Login/>}/>
            <Route path='/login' element={<Login/>}/>
        </Routes>

具体流程:

1.安装

npm install react-router-dom@6.10.0

2.引入 

import {Route,Routes,HashRouter} from "react-router-dom"

3.定义路由表

const router = <HashRouter>
       <Routes>
           <Route path='/' element={<Login/>}/>
           <Route path='/login' element={<Login/>}/>
           <Route path='/home' element={<Home />} />
       </Routes>
</HashRouter>

4.渲染路由

const container = document.getElementById('root');
const root = createRoot(container);
// root.render(<App />)  
// 添加路由之后 渲染的应该是路由  返回的已经是一个jsx结构了 可以直接放
root.render( router )

实现了根据路由显示页面

5.如果需要一个全局组件存放路由内容页面  可以定义一个app组件  放在Routes外面

class App extends Component {
    render() {
        return (
            // 只需要一个div 显示路由内容 this.props.children显示 相当于插槽
            <div>
                <div>我是app组件 可以放全局的元素</div>
                {/* 显示路由内容区域 */}
                {this.props.children}
            </div>
        )
    }
}


const router = <HashRouter>
    <App>
        <Routes>
            <Route path='/' element={<Login/>}/>
            <Route path='/login' element={<Login/>}/>
            <Route path='/home' element={<Home />} />
        </Routes>
    </App>
</HashRouter>

效果图:

 

路由重定向:

v6版本中 路由重定向使用Navigate组件

用法:

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

完整代码:

import { Component } from "react";
import "./assets/css/comment.less";
import { createRoot } from "react-dom/client";
// 引入路由
import { Routes, Route, HashRouter, Navigate } from "react-router-dom";

// 引入组件
import Login from "./views/Login";
import Home from "./views/Home";

// import GetRouters from "./router/index";

class App extends Component {
  render() {
    return (
      // 只需要一个div 显示路由内容 this.props.children显示 相当于插槽
      <div>
        <div>我是app组件 可以放全局的元素</div>
        {/* 显示路由内容区域 */}
        {this.props.children}
      </div>
    );
  }
}

const router = (
  <HashRouter>
    <App>
      <Routes>
        <Route path="/login" element={<Login />} />
        <Route path="/home" element={<Home />} />
        <Route path="/" element={<Navigate to="/home" />}></Route>
      </Routes>
    </App>
  </HashRouter>
);

// 根据路由表生成对应的路由规则

const container = document.getElementById("root");
const root = createRoot(container);
// root.render(<App />);
// 添加路由之后 渲染的应该是路由  返回的已经是一个jsx结构了 可以直接放
root.render(router);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值