react路由基础解读(Router、Link和Route)

 更新时间:2023年07月04日 10:37:00   作者:mapbar_front  
这篇文章主要介绍了react路由基础解读(Router、Link和Route),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

react路由(Router、Link和Route)

Facebook对react进行持续的改进,路由作为其中最重要的一部分,在4.0版本对其进行了大量的优化,总的来说,简单易用!之前使用react路由的时候,我们引入的是react-router包。现在改版之后,我们引入的包是react-router-dom包。

改版之后的react-router-dom路由,我们要理解三个概念,Router、Route和Link。

1、RouterRouter

我们可以把它看做是react路由的一个路由外层盒子,它里面的内容就是我们单页面应用的路由以及路由组件

使用方式:

import { BrowserRouter as Router } from "react-router-dom";
class Main extends Component{
    render(){
        return(
        <Router>
            <div>
                //otherCoding
            </div>
        </Router>
        )
    }
}

2、LinkLink

是react路由中的点击切换到哪一个组件的链接,(这里之所以不说是页面,而是说组件,因为切换到另一个界面只是展示效果,react的本质还是一个单页面应用-single page application)。

基本使用方式:

import { BrowserRouter as Router, Link} from "react-router-dom";
class Main extends Component{
    render(){
        return(
        <Router>
            <div>
                <ul>
                    <li><link to='/'>首页</Link></li>
                    <li><link to='/other'>其他页</Link></li>
                </ul>
            </div>
        </Router>
        )
    }
}

特别说明:

第一、Router下面只能包含一个盒子标签,类似这里的div。

第二、Link代表一个链接,在html界面中会解析成a标签。作为一个链接,必须有一个to属性,代表链接地址。这个链接地址是一个相对路径。

第三、Route,是下面要说的组件,有一个path属性和一个组件属性(可以是component、render等等)。

3、RouteRoute

代表了你的路由界面,path代表路径,component代表路径所对应的界面。

使用方式:

import React,{ Component } from "react";
import { render } from "react-dom";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
class Home extends Component{
    render(){
        return (
            <div>this a Home page</div>
        )
    }
}
class Other extends Component{
    render(){
        return (
            <div>this a Other page</div>
        )
    }
}
class Main extends Component{
    render(){
        return (
            <Router>
                <div>
                    <ul>
                        <li><Link to="/home">首页</Link></li>
                        <li><Link to="/other">其他页</Link></li>
                    </ul>
                    <Route path="/home" component={Home}/>
                    <Route path="/other" component={Other}/>
                </div>
            </Router>
        )
    }
}
render(<Main />,document.getElementById("root"));

react路由基础、使用与执行

接下来我们将会介绍React路由的基本使用方法,以及什么是默认路由,路由是怎么实现跳转的,他们是如何进行匹配的。

1、React路由基础

现代前端应用大都是SPA,那么什么是SPA呢?

SPA就是单页应用程序,他的优点是用户体验好、服务器压力小,但是我们要把很多内容放在一个页面上,为了有效使用单个页面管理原来多页面的功能,前端路由应运而生。

前端路由实现功能:从一个页面到另一个页面

映射规则:URL路径和组件对应功能(配置路径和组件配对)

2、路由的基本使用

1)安装react-router-dom

2)导入路由核心组件(当然我们要按需导入)

  • BrowserRouter as Router(Router就是BrowserRouter的别名)
  • Route
  • Link

3)使用React组件包裹整个应用(重要)

4)使用Link组件作为导航菜单(路由入口),会被编译成a标签

<Link to="/first">页面1</Link>

5)使用Route组件配置路由规则和要展示的组件(路由出口)

<Route path="/first(和路由入口匹配)" component={要展示的组件的名}></Route>

但是我们的内容展示在哪呢?Route写在哪就把内容渲染在哪

3、路由执行过程

1)点击Link组件,修改浏览器地址栏URL

2)React路由监听到地址栏变化

3)React路由遍历所有Route组件,使用路由规则path与pathname匹配

4)当匹配成功就展示Route组件内容

编程式导航:通过JS代码实现页面的跳转

4、默认路由

进入页面就会展示的路由,进入页面就会被匹配到展示 。

<Route path='/'>

5、路由匹配模式

1)模糊匹配模式

a)”/“所有pathname都可以被匹配

b)只要pathname是以path开头的都会匹配成功

c)pathname指得是Link组件中to属性的值

d)path指的是Route组件中path属性的值

2)精确匹配

a)给Route组件添加exact属性,让其变成精确匹配

b)只有pathname和name完全相同才会被展示

心得:React路由的一切都是组件、我们可以像思考组件一样去思考路由

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • React中组件复用的方式总结

    React中组件复用的方式总结

    这篇文章主要为大家详细介绍了Mixin、HOC、Render Props、Hooks这四种组件间复用的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-06-06
  • 深入理解react-router 路由的实现原理

    深入理解react-router 路由的实现原理

    这篇文章主要介绍了深入理解react-router 路由的实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • React Hooks的useState、useRef使用小结

    React Hooks的useState、useRef使用小结

    React Hooks 是 React 16.8 版本引入的新特性,useState和useRef是两个常用的Hooks,本文主要介绍了React Hooks的useState、useRef使用,感兴趣的可以了解一下
    2024-01-01
  • 详解react hooks组件间的传值方式(使用ts)

    详解react hooks组件间的传值方式(使用ts)

    本文主要介绍了react hooks组件间的传值方式(使用ts),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Objects are not valid as a React child报错解决

    Objects are not valid as a Rea

    这篇文章主要为大家介绍了Objects are not valid as a React child报错解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Redux thunk中间件及执行原理详细分析

    Redux thunk中间件及执行原理详细分析

    redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree,这篇文章主要介绍了Redux thunk中间件及执行原理分析
    2022-09-09
  • Vite + React从零开始搭建一个开源组件库

    Vite + React从零开始搭建一个开源组件库

    这篇文章主要介绍了Vite + React 如何从0到1搭建一个开源组件库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • React中的Context应用场景分析

    React中的Context应用场景分析

    这篇文章主要介绍了React中的Context应用场景分析,Context 提供了一种在组件之间共享数据的方式,而不必显式地通过组件树的逐层传递 props,通过实例代码给大家介绍使用步骤,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • React中的useState如何改变值不重新渲染的问题

    React中的useState如何改变值不重新渲染的问题

    这篇文章主要介绍了React中的useState如何改变值不重新渲染的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 在 React 中如何从状态数组中删除一个元素

    在 React 中如何从状态数组中删除一个元素

    这篇文章主要介绍了在 React 中从状态数组中删除一个元素,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论