第四章React_ajax

news/2025/1/8 15:24:29/

文章目录

    • 一、为什么要使用axios
    • 二、使用axios
    • 三、React中解决跨域的两种方式
      • 3-1、解决跨域的第一种方式
      • 3-2、解决跨域的第二种方式
    • 四、消息订阅与发布
      • 4-1、安装
      • 4-2、使用
      • 4-3、总结

一、为什么要使用axios

1. 相对于其他基于ajax封装的请求,axios更加的轻便

二、使用axios

import React from "react";
import axios from 'axios'
// 创建外壳组件App
export default class Hello extends React.Component {getStudentsData = ()=>{axios.get('http://localhost:3000/api1/students').then(res=>{console.log(res);})}getCarData = () =>{axios.get('http://localhost:3000/api2/cars').then(res=>{console.log(res);})}render(){return (<div><button onClick={this.getStudentsData}>点我获取学生数据</button><button onClick={this.getCarData}>点我获取汽车数据</button></div>)}
}

三、React中解决跨域的两种方式

3-1、解决跨域的第一种方式

优点:简单
缺点:只能代理一台服务器

1. 再packge.json文件最后面加上代理服务器这里的后台服务器的端口是5000,代理服务器就向5000端口发请求"proxy":"http://localhost:5000"2. 发送请求的时候发送到本地项目运行的服务器上react项目是默认运行在3000端口的,这里发送请求的时候需要向3000端口发getStudentsData = ()=>{axios.get('http://localhost:3000/students').then(res=>{console.log(res);})}3. 

3-2、解决跨域的第二种方式

1. src目录下面床加你一个setupProxy.js2. setupProxy.js中的配置const {createProxyMiddleware} = require('http-proxy-middleware')module.exports = function(app){app.use(createProxyMiddleware('/api1',{//遇见api1前缀的请求,就会触发该代理target:'http://localhost:5000',//请求转发给谁changeOrigin:true,//控制服务器收到的响应头中host】字段的值pathRewrite:{'^/api1':''}}),createProxyMiddleware('/api2',{target:'http://localhost:5001',changeOrigin:true,pathRewrite:{'^/api2':''}}))
}

四、消息订阅与发布

4-1、安装

 npm install pubsub-jsyarn add pubsub-js

4-2、使用

A组件

import PubSub from 'pubsub-js';
componentDidMount(){// 消息订阅PubSub.subscribe('lq',(_,data)=>{this.setState(data)})}

B组件

import PubSub from 'pubsub-js';
PubSub.publish('lq',{isFirst:false,isLoading:true})

4-3、总结

1. 消息订阅与发布适用于各种组件之间的通信

http://www.ppmy.cn/news/908148.html

相关文章

岁末自我总结

今年自我感觉技术上略有进步 总的来说分为二个方面 &#xff08;一&#xff09;体系化 &#xff08;二&#xff09;各种语言的初级融会贯通 对于&#xff08;一&#xff09; 主要是能够把零散的念头归结成体系化的文档&#xff0c;而不是像往年仅仅有零碎的想法。 具体是书写了…

Spark中为什么Left join比Full join 快

背景 最近在调优的过程中&#xff0c;发现了left outer join比full outer join快很多的情况&#xff0c; 具体的sql如下&#xff1a; from db.baseTb1 base join db.tb1 a on base.id a.idfull outer join db.tbl2 b on a.id b.id full outer join db.tbl3 c on b.id c…

smartprinter 这个绝对程序猿的福音啊

以前不知道有smartprinter这个东西&#xff0c;做套打程序的时候不知道浪费了多少纸张啊&#xff0c;想在想想都心疼。网上有下载中文破解版。特此记录。

倍福TwinCAT设置PLC的扫描周期,运行周期方法

倍福TwinCAT设置PLC的扫描周期&#xff0c;运行周期方法 双击PlcTask&#xff0c;然后再Cycle ticks中可以修改PLC的扫描周期&#xff0c;例如修改为2ms 为了验证是否真的是2ms&#xff0c;可以在程序中跟计数器绑定使用&#xff0c;PLC2ms扫描一次&#xff0c;计数器也是每个…

倍福PLC笔记

作为一个在自动化行业从事三年的工程师&#xff0c;我接触过的PLC主要有&#xff1a;德国倍福PLC、施耐德PLC、上海步科自动化的F1系列控制器等。 这几个控制平台大同小异&#xff0c;都是基于Codesys平台搭建的&#xff0c;其中倍福PLC主要基于Ethercat总线&#xff0c;施耐德…

SAP smartforms打印图片

注意&#xff1a;SAP只能上传打印bmp格式图片 1.标准程序上传 T-CODE:SE78 2.程序代码上传 DATA: P_FILENAME TYPE RLGRAP-FILENAME,P_NAME TYPE STXBITMAPS-TDNAME,P_TITLE LIKE BAPISIGNAT-PROP_VALUE,P_DOCID TYPE STXBITMAPS-DOCID,P_RESOLUTION TYPE …

倍福 (BeckHOFF)PLC 使用随笔小记1

我是一位工控小白&#xff0c;加入自动化这一行以来&#xff0c;参与的项目都是非标定制类&#xff0c;我的工作内容是电气设计、电气元件选型、PLC编程、设备调试等&#xff08;我不清楚怎么称呼我的职位&#xff0c;他们说叫电气工程师&#xff09;&#xff0c;目前用的PLC主…

smartprinter注册版_SmartPrinter免费版

SmartPrinter是一款很经典的虚拟打印软件&#xff0c;专为转换文件而研发的高品质打印驱动&#xff0c;以运行稳定、转换速度快和图像质量高而著称&#xff0c;可以将任意可打印文档转换成 PDF、TIFF、JPEG&#xff0c;BMP、PNG、EMF、GIF、TXT格式&#xff0c;因其速度快&…