React【axios、全局处理、 antd UI库、更改主题、使用css module的情况下修改第三方库的样式、支持sass less】(十三)

文件目录

Proxying in Development

http-proxy-middleware

fetch_get

fetch 是否成功

axios

全局处理

 antd UI库

更改主题

使用css module的情况下修改第三方库的样式

支持sass & less


 

Proxying in Development

在开发模式下,如果客户端所在服务器跟后台服务器的地址或者端口不一致,则会出现跨域的问题。
服务器运行在3030端口:

//server/index.js
const express=require('express')
const app=express()
app.get('/api/*',(req,res)=>{res.send('来自服务端的响应信息!!')
})
app.listen(3030,()=>{console.log('服务器正在监听3030端口')
})

发送网络请求:
 

import logo from './logo.svg';
import './App.css';
import { Outlet } from 'react-router-dom';
function App() {const onFetch=()=>{//向服务器发送网络请求fetch('http://localhost:3030/api/user')}return (<div className="App"><button onClick={onFetch}>发送请求</button></div>);
}
export default App;

 使用Proxy解决跨域
在package.json中设置Proxy属性:

"proxy":"http://localhost:3030"

设置代理后,则发送的api请求会被代理服务器转发到 localhost:3030

提示:
proxy代理仅在开发中有效。
在生产环境下,这个代理无效。

http-proxy-middleware
 

 为了更灵活的配置代理信息,我们可以使用http-proxy-middleware。

1、安装http-proxy-middleware
 

npm install http-proxy-middleware  
//或者 yarn add http-proxy-middleware

2、创建src/setupProxy.js文件

const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
//app为Express实例//使用app.use注册中间件app.use('/api/*',createProxyMiddleware({//target:服务器地址target: 'http://localhost:3030',changeOrigin: true}));
};

提示:
该文件是只支持NodeJs语法,因为它运行在Node环境中。

fetch_get

 fetch是浏览器提供的API,用于发起获取资源的请求,它返回一个 promise。

fetch(input[, init])
      input:要获取资源的 URL
      init:(可选)配置对象
      返回Promise


get
 

fetch('/api/user').then(res=>{// res是响应对象//返回的body是字符串,所以使用text()读取return res.text()}).then(data=>{console.log(data)})

传递参数

//get请求传递参数
fetch('/api/user?name=baizhan').then(res=>{// res是响应对象//返回的body是json,所以使用json()读取return res.json()}).then(data=>{console.log(data)})

fetch 是否成功

 当遇到网络错误时, fetch() 返回的 promise 会被 reject。成功的 fetch() 检查不仅要包括 promise 被 resolve,还要判断下status,HTTP 500或者404 状态并不被认为是网络错误,依然会返回响应对象,只不过它的ok为false。
服务器的状态码返回500:

res.status(500).send('服务器发生错误')})
fetch('/api/user').then(res=>{// res是响应对象console.log(res)return res.text()}).then(data=>{console.log(data)}).catch(e=>{// catch捕获不到我们预期的错误})

应当判断响应信息的status或者ok是否为true,否则抛出错误
 

fetch('/api/user').then(res=>{// res是响应对象console.log(res)if(res.status==200){return res.text()}throw new Error('响应发生错误')}).then(data=>{// 抛出错误,则这个回调函数并不会被调用console.log(data)}).catch(e=>{// 抛出错误,catch捕获,可以编写处理错误的逻辑})

axios

 Axios 是一个基于 promise 网络请求库。

1、安装axios

npm instal axios
//或者yarn add axios

get

axios.get('/api/user',{params: {name:'xiaotong'}}).then(res=>{console.log(res.data)})

post

//传递json数据  
axios.post('/api/user', {name:'xiaotong'}).then(res=>{console.log(res.data)})
//传递表单数据  
axios.post('/api/user',{name:'xiaotong'},{headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(res=>{console.log(res.data)})

全局处理

1、指定默认配置
您可以指定默认配置,它将作用于每个请求。

axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

2、拦截器
在请求或响应被 then 或 catch 处理前拦截它们。
 

// 添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么config.headers['Authorization'] = 'xxxxxxx';config.headers['Content-Type'] = 'application/x-www-form-urlencoded';return config});
// 添加响应拦截器axios.interceptors.response.use(function
(response) {// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么console.log(response)return response}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么console.log(error)})

提示:
axios参考文档:https://www.axios-http.cn/docs/intro

 antd UI库

 antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研
发企业级中后台产品。

官方文档:https://ant.design/index-cn

 1、安装antd

npm install antd
//或者yarn add antd

2、使用antd

//AntdTest.js
import React from 'react';
import { Button, DatePicker } from 'antd'
export default function index() {return (<div ><Button type='primary'>我是来自antd的按钮</Button><DatePicker /></div>);
}


3、国际化
 

//index.js
import zhCN from 'antd/locale/zh_CN';
import {ConfigProvider} from 'antd'
<React.StrictMode><ConfigProvider locale={zhCN}><App/></ConfigProvider></React.StrictMode>

4、引入重置样式
 

//index.js
import 'antd/dist/reset.css';

更改主题

 更改主题
通过ConfigProvider设置主题
切换内置主题:默认有三个内置主题(defaultAlgorithm,darkAlgorithm, compactAlgorithm)

 

//通过修改 ConfigProvider 中 theme 属性的 algorithm 属性来切换
import {ConfigProvider,theme} from 'antd'
//index.js
<ConfigProvider locale={zhCN} theme={{algorithm: theme.darkAlgorithm,}}><App/></ConfigProvider>

配置主题(修改主题变量)
 

<ConfigProvidertheme={{token: {colorPrimary: '#00b96b',},}}><App /></ConfigProvider>

提示:
主题变量参考   https://ant.design/docs/react/customize-theme-cn

 使用Desing Token

import React from 'react';
import { Button, DatePicker ,theme} from 'antd'
export default function index() {//调用theme的useToken()获取当前主题下的Design Tokenconst {token}=theme.useToken()return (<div ><Button type='primary'>我是来自antd的按钮</Button><DatePicker />{/* 根据变量名来访问 */}<div style= {{color:token.colorPrimary}}>hello,xiaotong</div></div>);
}

使用css module的情况下修改第三方库的样式

 

//AntdTest/index.module.css
.container :global(:where(.css-dev-only-donot-override-1ni1eeq).ant-btn-primary){background:red
}

:where 选择器降低 CSS Selector 优先级,以减少用户升级 v5 时额外调整自定义样式成本。
 比对:

.ant-btn-primary{background:red//它的优先级更高
}
:where(.css-dev-only-do-not-override-1ni1eeq).ant-btn-primary{background:blue
}

支持sass & less

 支持sass
       安装sass

npm install sass
或者yarn add sass

      更改文件的后缀为.scss
 

支持less
     导出配置文件。

npm run eject
或者yarn run eject

安装less和less-loader
 

npm install less less-loader -D
或者yarn add less less-loader -D

修改webpack.config.js

//定义正则,用来查找文件以.less结尾的文件
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;{test: lessRegex,exclude: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,modules: {mode: 'icss',},},'less-loader'),// Don't consider CSS imports dead code even if the// containing package claims to have no side effects.// Remove this when ,webpack adds a warning or an error for this.// See https://github.com/webpack/webpack/issues/6571sideEffects: true,},// Adds support for CSS Modules, but using SASS// using the extension.module.scss or .module.sass{test: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,modules: {mode: 'local',getLocalIdent: getCSSModuleLocalIdent,},},'less-loader'),},

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

讯飞录音笔误删除WAV录音文件恢复成功案例

讯飞录音笔删除恢复的难点 难点一&#xff0c;电脑无法识别为普通电脑盘符。这个是厂家系统设计上的问题&#xff0c;本博文不涉及。 难点二&#xff0c;一般恢复后播放有间隙性噪音问题。这个是数据碎片问题&#xff0c;是本博文的关注点。 大多数情况下&#xff0c;讯飞录…

智慧城市照明为城市节能降耗提供支持继电器开关钡铼S270

智慧城市照明&#xff1a;为城市节能降耗提供支持——以钡铼技术S270继电器开关为例 随着城市化进程的加速&#xff0c;城市照明系统的需求也日益增长。与此同时&#xff0c;能源消耗和环境污染问题日益严重&#xff0c;使得城市照明的节能减排成为重要议题。智慧城市照明系统…

PDF Expert for mac(专业pdf编辑器)苹果电脑

PDF Expert for Mac 是一款功能强大、界面简洁的PDF阅读、编辑和转换工具&#xff0c;为Mac用户提供了全面而便捷的PDF处理体验。无论是日常工作中的文档阅读、标注&#xff0c;还是专业需求下的编辑、转换&#xff0c;PDF Expert 都能满足您的各种需求。 首先&#xff0c;PDF…

25期代码随想录算法训练营第十四天 | 二叉树 | 递归遍历、迭代遍历

目录 递归遍历前序遍历中序遍历后序遍历 迭代遍历前序遍历中序遍历后序遍历 递归遍历 前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # …

[蓝桥杯复盘] 第 3 场双周赛20231111

[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…

iview实现table里面每行数据的跳转

我的需求是跳转到第三方网站&#xff0c;看官方是写了如何跳转站内路由&#xff0c;不符合我的要求&#xff0c;在csdn发现了一篇文章&#xff0c;我贴一下代码 <template><Table border :columns"ReportColumns" :data"ReportData"><templ…

aws亚马逊:什么是 Amazon EC2?

Amazon Elastic Compute Cloud&#xff08;Amazon EC2&#xff09;在 Amazon Web Services&#xff08;AWS&#xff09;云中按需提供可扩展的计算容量。使用 Amazon EC2 可以降低硬件成本&#xff0c;因此您可以更快地开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的…

Spring Cloud 微服务入门篇

文章目录 什么是微服务架构 Microservice微服务的发展历史微服务的定义微小的服务微服务 微服务的发展历史1. 微服务架构的发展历史2. 微服务架构的先驱 微服务架构 Microservice 的优缺点1. 微服务 e Microservice 优点2. 微服务 Microservice 缺点微服务不是银弹&#xff1a;…

【开源】基于Vue.js的生活废品回收系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨…

51单片机应用从零开始(一)

1. 单片机在哪里 单片机是一种集成电路芯片&#xff0c;通常被嵌入到电子设备中用于控制和处理数据&#xff0c;例如家电、汽车、电子玩具、智能家居等。因此&#xff0c;你可以在许多电子设备中找到单片机的存在。单片机通常被放置在设备的主板或控制板上。 2. 单片机是什么…

数据分析实战 | 贝叶斯分类算法——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接&#xff1a;https://download.csdn.net/d…

NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

常见面试题-分布式锁

Redisson 分布式锁&#xff1f;在项目中哪里使用&#xff1f;多久会进行释放&#xff1f;如何加强一个分布式锁&#xff1f; 答&#xff1a; 什么时候需要使用分布式锁呢&#xff1f; 在分布式的场景下&#xff0c;使用 Java 的单机锁并不可以保证多个应用的同时操作共享资源…

VB.NET—Bug调试(参数话查询、附近语法错误)

目录 前言: BUG是什么&#xff01; 事情的经过: 过程: 错误一: 错误二: 总结: 前言: BUG是什么&#xff01; 在计算机科学中&#xff0c;BUG是指程序中的错误或缺陷&#xff0c;它通过是值代码中的错误、逻辑错误、语法错误、运行时错误等相关问题&#xff0c;这些问题…

Linux技能篇-yum源搭建(本地源和公网源)

文章目录 前言一、yum源是什么&#xff1f;二、使用镜像搭建本地yum源1.搭建临时仓库第一步&#xff1a;挂载系统ios镜像到虚拟机第二步&#xff1a;在操作系统中挂载镜像第三步&#xff1a;修改yum源配置文件 2.搭建本地仓库第一步&#xff1a;搭建临时yum源来安装httpd并做文…

golang工程组件——redigo使用(redis协议,基本命令,管道,事务,发布订阅,stream)

redisgo redis 与 client 之间采用请求回应模式&#xff0c;一个请求包对应一个回应包&#xff1b;但是也有例外&#xff0c;pub/sub 模 式下&#xff0c;client 发送 subscribe 命令并收到回应包后&#xff0c;之后被动接收 redis 的发布包&#xff1b;所以若需要使 用 pub/s…

ARM day4

LED灯亮灭控制 .text .global _start _start: 1ldr r0,0x50000a28ldr r1,[r0]orr r1,r1,#(0x3<<4)str r1,[r0] 2ldr r0,0x50006000ldr r1,[r0]bic r1,r1,#(0x3<<20)orr r1,r1,#(0x1<<20)bic r1,r1,#(0x3<<16)orr r1,r1,#(0x1<<16)str r1,[r0]…

2023年05月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下列程序段的运行结果是?( ) def s(n):if n==0:return 1else:

中断 NVIC的概念和原理

1.什么是中断 中断&#xff1a; 由于中断源的触发&#xff0c;常规程序被打断&#xff0c; CPU转 而运行中断响应函数&#xff0c;而后又回到常规程序的执行&#xff0c; 这一过程叫做中断。 中断优先级的概念 中断的意义和作用 中断处理的过程和术语 STM32 GPIO外部中断简…

计算机视觉:使用opencv进行直线检测

1 直线检测介绍 在图像处理中&#xff0c;直线检测是一种常见的算法&#xff0c;它通常获取n个边缘点的集合&#xff0c;并找到通过这些边缘点的直线。其中用于直线检测&#xff0c;最为流行的检测器是基于霍夫变换的直线检测技术。 1.1 什么是霍夫变换 霍夫变换&#xff08…