React笔记——github案例(用到axios 和 pubsub)

news2025/1/18 4:34:31

案例github用上脚手架配置代理

1.完成静态页面构建

小技巧:先在原html页面搜索最外侧框 是否有样式存在,如果样式不存在则不需要剪切过去

  1. 给需求或效果分好组件,分别是 Search 和 List 、App 组件

  2. class都改为 className 给图片添加上特定的 alt 和图片地址

Search 框内简单的请求数据

Search组件需要用上 axios.get请求,第一步需要获取input框,有多重结构赋值可以用上,解构出value值

前提是给对象解构赋值

问题① 出现跨域限制问题怎么办?

端口号3000向端口号5000服务器请求无法回来数据,实际开发中基本不用 cors 解决跨域问题,最好用第二种方法: setupProxy 配置代理方法

在 src 文件夹下创建setupProxy 文件

在Search组件中 ,由于站在3000端口与发送请求端口号一致,可以省略成

axios.get(/api1/search/user?q=atguigu)

简单的组件通信

需求:搜索框内填关键词即可在 List 组件出现相关图片和登录名

由于兄弟组件以以现阶段能力无法进行传状态,所以是Search组件给父组件传状态,App父组件再给List组件传状态

查看效果记得打开服务器

请求数据后获取对象数组信息,只要求出现头像和登录名

问题② ?

在f12检查页面时出现了 localhost 3000无法访问的问题 先查看端口是否冲突

一、win+R输入cmd 二、输入 netstat -nao | findstr 3000 回车执行,查看哪个程序占用了端口号 三、输入 taskkill/F /pid 端口号终止进程即可

终止失败可以利用 管理员身份打开 cmd

问题③ ?

呵呵并不是端口冲突的问题,是我的版本过低,重新编译一下setupProxy

//低版本配置代码
const proxy = require('http-proxy-middleware')

module.exports = function(app){
  app.use(
    proxy('/api',{
      target:'http://localhost:5000',
      changeOrigin:true,
      pathRewrite:{'^/api':''}
    }),
    proxy('/api2',{
      target:'http://localhost:5001',
      changeOrigin: true,
      pathRewrite:{'^/api2':''}
    })
  )
}

-----------------------------------------------------------------

//新版配置代码
const {createProxyMiddleware} = require('http-proxy-middleware')

module.exports = function(app){
  app.use(
    createProxyMiddleware('/api1',{ //api1是需要转发的请求(所有带有/api1前缀的请求都会转发给5000)
      target:'http://localhost:5000', //请求转发给谁 配置转发目标地址(能返回数据的服务器地址)
      changeOrigin:true,  //控制服务器收到请求头中host字段的值:标识请求从哪里发出来的
        /*
          changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
          changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:3000
          changeOrigin默认值为false,但我们一般将changeOrigin值设为true
      */
      pathRewrite:{'^/api1':''} //重写请求路径,不加会报错  控制服务器接收到的请求头中host字段的值 去除请求前缀,保证交给后台服务器的是正常请求地址(必须配置)
    }),
   
    createProxyMiddleware('/api2',{
        target:'http://localhost:5001',
        changeOrigin:true,
        pathRewrite:{'^/api2':''}
      })
  )
}

优化页面

需求:

  • 第一次打开页面还没有搜索时 呈现出欢迎字样

  • 正在搜索时 出现 loading

  • 如果出错 出先错误提示信息

 

 

 问题③? 报错 object are not valid as a React child ...

 

消息订阅-发布机制

子传给父,父再传给子。这种兄弟组件通信太麻烦了,学一个新的知识点直接兄弟两个通信

  1. 工具库:PubSubJS

  2. 下载 npm i pubsub -js --save

  3. 使用:

    1) import PubSub from 'pubsub-js' //引入

    2) PubSub.subscribe('delete', function(data){ }); //订阅

    3) PubSub.publish('delete', data) //发布消息

运用在上一个案例中:

Search组件是发布 List组件是订阅

因为最后的状态都要交给List组件,于是将app组件的初始状态都交给 List组件

当页面一打开就呈现组件 用上componentDidMount() {}

 

pubsub 真神了 可能是刚学组建通信都是子传父 父传子很麻烦把 现在觉得有pubsub多好 

下面我要去补补promise的课程了 大家撑住加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS高级(二):继承、数组的一些api、Object.defineProperty()、call、apply、bind

JavaScript高级(二)一、继承1.call方法改变this指向2.构造函数中模拟类的super实现属性继承3.构造函数借助原型对象实现方法继承4.类的本质二、ES5几个新增方法1.数组forEach()2.数组filter()3.数组some()4.字符串trim()三、Object.definProperty()四、改…

基于STM32结合CubeMX学习Free-RT-OS的源码之深入学习软件定时器实现过程

概述 关于在CUBEMX上的配置 介绍 软件定时器基于硬件定时器实现。 软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被定时器 调用的这个功能函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期,…

什么是需求分析,如何进行需求分析?

目录 前言 需求分析在分析什么 如何看待产品原型设计 技术同学培养产品意识 如何应对需求变更问题 总结 重点:配套学习资料和视频教学 前言 这篇文章,我会将软件工程中关于需求分析相关的知识进行总结梳理,并以自己理解的方式进行阐述…

iNFTnews|风口之上,耐克推出的web3平台.SWOOSH能否引领市场?

本周一,著名的体育运动品牌耐克宣布,公司将进一步进军Web3,并将发布一个旨在通过旗下的数字可穿戴设备吸引用户的新平台——.SWOOSH。 耐克表示,.SWOOSH将成为Web3教育的资源库,以及购买和交易虚拟运动鞋或运动衫等数…

Oracle SQL执行计划操作(3)——物化视图相关操作

3. 物化视图相关操作 该类操作与SQL语句执行计划中访问物化视图数据的路径和方式相关,主要包括物化视图访问类相关操作。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。 1)MAT_VIEW ACCESS FULL 对物化视图(Materialized View)直…

培训学校的教务管理系统存在的问题有哪些?

教务管理在培训学校管理里面占据不可或缺的地位。随着计算机、网络、大数据、人工智能等技术的发展,国家对智慧校园的重视,促进了培训学校教务管理信息化与智慧化建设。然而,随着科技进步速度不断加快,教育改革步伐的不断加大&…

解决:将Ubuntu系统打包成ios镜像并制作U盘系统

将Ubuntu系统打包成ios镜像并制作U盘系统一、安装 Systemback二、将创建的.sblive镜像文件转为.iso格式三、写入U盘进行安装四、制作系统U盘一、安装 Systemback Currently supported Ubuntu releases: - 14.04.X LTS - 15.04 - 15.10 - 16.04.X LTS - 16.10Systemback的作者在…

linux的基本指令(中)

文章目录1.man指令1.安装2.用法3.man数字1. printf函数的查询2.cp指令1.cp 文件1.拷贝到当前目录2.拷贝到 其他目录中3. 拷贝到上一级目录2.cp 目录1.返回上一级目录3. mv指令1.剪切2. 文件的重命名4. cat指令1.显示文件的全部内容并且不可以修改2.cat -n指令3. cat -s 指令5. …

6张思维导图,搞定项目管理!(PMP项目管理可用)

工作中,我们最常遇到的就是大大小小的工作项目。项目要怎么做,才能100%达成目标呢? 小哈总结了6组项目管理思维导图。只要从五大阶段掌握诀窍,用项目管理的思维去管理工作,工作就能有条不紊按预期达到目标&#xff0c…

GitHub Codespaces 安装 .NET 7

本文主要介绍如何在 GitHub Codespaces 这个云上 IDE 环境中安装 .NET 7 背景 GitHub 的 Codespaces 可以让我们随时随地编写代码,一些简单的修改也非常方便快捷。特别是 .NET 7 发布后,一些可以直接升级的小项目只需要更改配置就可以了,我们…

EN 14915实木镶板和包层—CE认证

实木镶板和包层CE认证(欧盟强制认证)-简介 在欧盟市场“CE”标志属强制性认证标志,以表明产品符合欧盟《技术协调与标准化新方法》指令的基本要求。这是欧盟法律对产品提出的一种强制性要求。 在实木镶板和包层上加贴CE标志不但可…

Active Directory报表计划

ADManager Plus的“计划报表”功能是一个独有模块,可使报表生成实现自动化。IT管理员现在可为任何所需的时间段(从一个小时到一个月)计划报表。因而,计划功能可提供一致、准确的报表交付,而不会产生任何麻烦和费用。本…

【ESP32_8266_WiFi (十三)】ESP8266自动配网 – WiFiManager库使用说明

文章目录ESP8266自动配网 – WiFiManager库使用说明1 WiFiManager库使用说明1.1 WiFi配置流程1.2 WiFi配置示例程序1.2.1 预备程序 – 清理ESP8266储存的WiFi连接信息1.2.2 WiFiManager网络配置示例程序1.2.3 WiFiManager网络配置测试2 WiFiManager库汉化和定制说明2.1 WiFiMan…

Spring(十)- Spring Bean的基本注解

文章目录一、Spring Bean的基本注解一、Spring Bean的基本注解 Spring除了xml配置文件进行配置之外,还可以使用注解方式进行配置,注解方式慢慢成为xml配置的替代方案。我们有了xml开发的经验,学习注解开发就方便了许多,注解开发更…

调节自噬的小分子化合物

自噬? 生物体需要通过不断合成和降解物质来维持自身的内稳态(Homeostasis)。细胞内物质的降解主要通过两种途径进行:泛素化蛋白酶体途径(Ubiquitin-proteasome system, UPS)和自噬溶酶体途径(Autophagy-ly…

06 数组

本文仅作为个人笔记 数组 数组的引入 import java.util.Scanner; public class TestArray01{public static void main(String[] args){//功能:键盘录入是个学生的成绩,求和,求平均数://定义一个求和的变量:int sum …

GoF之代理模式

GoF之代理模式 1、 对代理模式的理解 生活场景1:牛村的牛二看上了隔壁村小花,牛二不好意思直接找小花,于是牛二找来了媒婆王妈妈。这里面就有一个非常典型的代理模式。牛二不能和小花直接对接,只能找一个中间人。其中王妈妈是代…

Linux | 磁盘结构 | 文件系统认识 | inode | 软硬链接

文章目录磁盘物理结构的认识磁盘的分区inode和文件数据之间的映射文件名和inode之间的映射文件知道自己的inode号吗?文件的软硬链接硬链接数磁盘物理结构的认识 (图片来自于网络)一个磁盘由许多盘片构成,每个盘片上有着许多磁道&a…

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析

我的知识星球里有朋友提问: 我的场景是cds 调用 table function, table function 调用 amdp 然后报错: code:CX_SQL_EXCEPTION message: feature not supported.Contains predicates only supported when table function is unfolded? 请问这个是什么意思&#xf…

使用分贝的波动大小将声音数据降维成字符

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述