React 中router v6 与 v5 中嵌套路由的区别

 

v5中的嵌套路由:

主页面v5中使用{this.props.children}来接收子页面

import React, { Component } from 'react';
export default class About extends Component {
  render() {
    return (<h1>
      欢迎,这里是About
      {this.props.children}    
    </h1>)
  }
}

v5中的路由写法如下:

//引入react jsx写法的必须
import React from 'react'; 
//引入需要用到的页面组件 
import Home from '../pages/home';
import About from '../pages/about';
import Other from '../pages/other';
//引入一些模块
import { BrowserRouter as Router, Route, Routes} from "react-router-dom";

function router(){
return (
<Routes>
    <Route path="/home" component={<Home/>} />
    <Route path="/about" component={<About/>} />
    <Route path='/about' render={()=>{
      <About>
        <Router path='/about/other' component={Other}></Router>
      </About>
    }}>
    </Route>
</Routes>);
}

export default router;

 

v6中的嵌套路由:

主页面中使用<Outlet />来接收子页面

//about.js
import React, { Component } from 'react';
import {Outlet} from "react-router-dom";

export default class About extends Component {
  render() {
    return (<h1>
      欢迎,这里是About
      <Outlet />
    </h1>)
  }
}

v6中路由的写法如下:

//引入react jsx写法的必须
import React from 'react'; 
//引入需要用到的页面组件 
import Home from '../pages/home';
import About from '../pages/about';
import Other from '../pages/other';
//引入一些模块
import { BrowserRouter as Router, Route, Routes} from "react-router-dom";

function router(){
return (
<Routes>
    <Route path="/home" element={<Home/>} />
    <Route path="/about" element={<About/>}>
      <Route path='other' element={<Other/>}></Route>
    </Route>
</Routes>);
}

export default router;

 

两者相比之下,v6的写法更加简洁了。

 
posted @ 2022-09-09 17:52  秃头的铲屎官  Views(334)  Comments(0Edit  收藏  举报