IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React路由 -> 正文阅读

[JavaScript知识库]React路由

一、路由的安装及配置

1.1路由的分类

react分为 普通组件和路由组件
普通组件一般放在components文件中
路由组件一般放在views文件中

想要在react中实现组件之间的跳转 我们需要使用react路由
在react中路由有两个:
1 react-router
2 react-router-dom
我们在进行使用的时候两者都可以 但是我们一般选择react-router-dom
里边dom操作的api

1.2路由的安装及配置

1、安装react-router-dom
npm i react-router-dom --save-dev
2 、在src文件中创建一个router.js 路由配置文件
import {BrowserRouter as Router, Route} from 'react-router-dom'引入

//这里引入路由组件,并引入 BrowserRouter (属于浏览器自带路由)、Router以下是固定写法
 class Routers extend Component{
        render() {
            return(
                <Router>
                    <Route path="/自定义组件的路径1" component={要渲染的组件1}></Route>
                    <Route path="/自定义组件的路径2" component={要渲染的组件2}></Route>
                </Router>
            )
        }
    }
    export default Routers

3 在app.js文件中引入router.js文件
import Routers from './router'

在需要渲染组件的地方写上 <Routers/> 在react 中路由是router组件并且以组件的形式渲染所以我们一般在app.js中只要引入组件就行了 而路由组件都在router.js中渲染

1.3精确路由

这里我们需要注意的是:在router.js文件中配置路由组件path路径的时候
例如:

如果 path=’/’ component={A} // 当路由地址中输入 / 匹配A组件
如果 path=’/b’ component={B} // 当路由地址中输入/b 匹配A组件和B组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们这个如果想要/b支取匹配b组件 我们需要 在a组件上边添加exact属性 进行精确匹配
在这里插入图片描述

    这个时候我们在路由地址中输入/b  它只会匹配b组件 而不会匹配a组件

在这里插入图片描述

在react中我们使用Link组件 实现组件间的跳转 相当于vue中Router-link 最终都会被浏览器解析为a标签

二、react动态路由的匹配

2.1动态路由的实现(/:id)

如果有多个有规律的路由地址 需要同时匹配同一个路由组件 这个时候我们可以使用动态路由匹配
例如:
/c/1
/c/2
/c/3

这个时候我们可以使用动态路由匹配( 三个路由需要同时匹配 C.js路由组件)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里可以看出不管后缀怎么改变我们的组件匹配的都是c组件

2.2动态路由的实现(/?属性名=属性值)

以conde页面的导航路由为例
在cnde中我们的导航栏的地址是以query的形式渲染的(点击不同的内容渲染不同的数据)

/?tab=all
/?tab=ask
/?tab=good
注意 /?不影响地址仅仅只是用于传值的作用
当然这里直接写 /1或者/2 就改变了路由地址
在这里插入图片描述
在这里插入图片描述

三、路由嵌套

3.1嵌套路由的模式

嵌套路由在进行路由配置的时候 我们需要将嵌套子路由写在父路由里边

              <Route path='/demo'>
                <Demo>
                    <Route path='/demo/x' component={X}><Route>
                    <Route path='/demo/y' component={Y}><Route>
                </Demo>
              </Route>

这里我们的父路由是Demo 包裹的子路由X、Y
当然这里的子组件要想在父组件中显示不同的路由的话就需要在父组件中加上一个{this.props.children}这样我们才能在路由中显示父组件动态加载不同的子路由组件(这里嵌套路由可以在tab切换中使用)
注意:
在进行使用的时候 我们需要将嵌套子路由的path写完整
如果想要实现输入/demo/x 显示嵌套路由页面 我们不能给父路由 添加exact精确匹配

html数据的渲染

如果当前项目的接口返回的数据结构为html字符串 我们需要将html字符串转化为html dom结构渲染在页面中我们就需要使用类似于vue中v-html指令的属性 dangerouslySetInnerHTML

<标签名 dangerouslySetInnerHTML={{__html: 要渲染的数据}}></标签名>

例如:
cnode中详情页面 就是以html的模式渲染的
在这里插入图片描述
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:46:11  更:2021-08-27 11:46:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 4:38:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计