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技术全家桶(39)消息订阅和发布技术pubsub-js以及路由 -> 正文阅读

[JavaScript知识库]react技术全家桶(39)消息订阅和发布技术pubsub-js以及路由

1.适用兄弟间的消息传递 以及 子传递给父亲的消息传递
2.安装
npm i pubsub-js --save
3.适用
A组件使用B对象 C组件改变B对象
在A组件定义含有B对象的状态:
在这里插入图片描述
同时在该组件中进行订阅:
组件加载完成以后开始订阅:在钩子函数中订阅:
在这里插入图片描述
在C组件发布消息:
在这里插入图片描述

React路由:
SPA的理解:
1.单页面web应用 single page web application 简称:SPA
2.整个应用只有一个完整的页面
3.点击页面中的链接不会刷新页面,只做页面的局部更新
4.数据都需要通过ajax请求获取,并且在前端异步展现。

路由的理解:
什么是路由?
1.一个路由就是一个映射关系
2.key为路径 value可能是function (函数组件)或者component

路由的原理:
原理就是依靠浏览器的history。
history库的监听方法可以试试检测浏览器的地址的变化。

react中的路由使用 react-router-dom插件
路由和路由器的区别:
路由器是管理路由的,比如路由器上的每一个插口 都是一个路由 由路由器管

安装 npm i react-router-dom --save

引入:import {Link} from ‘react-router-dom’;

About Home 报错: ![在这里插入图片描述](https://img-blog.csdnimg.cn/55eacadc701745b1982277cdb9c812dd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKh5pyJ5aWz5pyL5Y-L55qE56iL5bqP5ZGY,size_15,color_FFFFFF,t_70,g_se,x_16) Link需要在Router里面 如下: About Home 还报错: ![在这里插入图片描述](https://img-blog.csdnimg.cn/36f57114ecd144eda609e5efcbb5fb41.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKh5pyJ5aWz5pyL5Y-L55qE56iL5bqP5ZGY,size_13,color_FFFFFF,t_70,g_se,x_16) Router内置报错 ,因为没有明确实际的Router Router分两种BrowserRouter 和 HashRouter About Home 以上是编写路由衔接。
    <Router path="/about" component={About}/>
    <Router  path="/home" component={Home}/>
    这是编写路由。
    报错:

在这里插入图片描述
标签用错了 应该用Route

    <BrowserRouter>
        <Route path="/about" component={About} />
        <Route path="/home" component={Home} />
    </BrowserRouter>

在这里插入图片描述
需要用Routers包裹:






搞定了 但是 点击没反应啊

连个原因:第一个 BrowserRouter 应该包裹 Link 和Routers
所以:

About
Home

        <Routes>
          <Route path="/about" element={<div>about</div>} />
          <Route path="/home" element={<div>home</div>} />
        </Routes>
     
  </BrowserRouter>

如果有多组Link Route的话 也只会有一个 BrowserRouter 所以BrowserRouter 应该在index中把App组件包裹。

第二个 react-router-dom 组件 5版本和6版本不一样 视频是5版本 本人代码实现6版本。

该版本为5版本 npm i react-router-dom@5 --save

代码如下:

About
Home

          <Route path="/about" component={About} />
          <Route path="/home" component={Home} />
     
  </BrowserRouter>

注意: 没有了 Routers了 element 给成了 component {

about
}改为{About}

在这里插入图片描述
BrowserRouter 和 HashRouter
一个带#号 HashRouter http://localhost:3000/#/about 带#号的连接 #号后面的的资源不会被发送到服务器 会被认为是前端 所以/about 不会被带给服务器

一个不带 BrowserRouter http://localhost:3000/about

这种写法: About就是路由组件
这种写法: About 就是一般组件
所以此处的About就是路由组件 应该放在src/pages目录下

一般组件在不传递props的时候是收不到props
路由组件在用户点击锚点触发路由组件的时候 会收到props props中含有history对象:
在这里插入图片描述
路由高亮的效果:
使用NavLink 标签 有个activeClassName属性,为了指定active的样式 有可能自己写的样式跟第三方的冲突了 那就提高自己样式的权重
封装NavLink
在这里插入图片描述
有了MyNavLink 就可以只写to属性了 className和activeClassName就不用写了,当然前提是所有activeClassName使用同一个样式、className使用同一个样式
MyNavLink
在这里插入图片描述

使用:
在这里插入图片描述
如果myNavLink需要传递7组标签属性:
比如:
在这里插入图片描述
在myNavLink就要写7组么? 答案不是的
如图输写即可:
在这里插入图片描述
问题解决了 但是感觉title不和谐。就只能这样了么 nonono
之前的NavLink 是这么写的 About 有开闭标签 以及标签体内容
所以MyNavLink也要这么写,但是这个MyNavLink的标签体内容如何传递给MyNavLink中的NavLink呢?
About 当这么写的时候 MyNavLink 的Props就会有个children属性 值就是标签体内容
在这里插入图片描述

NavLink的这种写法:也是可以的
在这里插入图片描述
所以最终的MyNavLink的用法是:
在这里插入图片描述
…this.props就包含了children属性

最终MyNavLink的用法:
在这里插入图片描述
总结封装的NavLink:
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:32:12  更:2022-04-18 17:35:16 
 
开发: 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年11日历 -2024/11/24 3:17:49-

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