React---day9
11、css
11.1 styled的基本使用
CSS-in-JS的模式就是一种将样式(CSS)也写入到JavaScript中的方式,并且可以方便的使用JavaScript的状态;
npm add styled-components
const Title = styled.h1`font-size: 1.5em;text-align: center;color: palevioletred;
`;
<Title>Hello World, this is my first styled component!</Title>
它支持类似于CSS预处理器一样的样式嵌套:
- 支持直接子代选择器或后代选择器,并且直接编写样式;
- 可以通过&符号获取当前元素;
- 直接伪类选择器、伪元素等;
const Wrapper = styled.section`padding: 4em;background: papayawhip;.banner{&,active{color:red;}&:hover {color:blue;}}&::after {content:"aaa"}
`;
11.2 props、attrs
**props:**props可以被传递给styled组件
- 获取props需要通过${}传入一个插值函数,props会作为该函数的参数;
- 这种方式可以有效的解决动态样式的问题;
传入数据:
<HyRequest left="20px" />
在styled当中使用:
const HyRequest = styled.input.attrs(props => ({placeholder: "请填写文本",bcolor: "red",left: props.left || "20px"
}))
**attrs:**新建属性
const HyRequest = styled.input.attrs(props => ({placeholder: "请填写文本",bcolor: "red",left: props.left || "20px"
}))`border-color: red;border: 1px solid ${props => props.bcolor};padding-left: ${props => props.left};
`;
11.3 高级特性
继承
const HYButton = styled.button`padding: 10px 20px;border: 1px solid red;color: ${props => props.theme.themeColor};background: ${props => props.theme.themeColor};cursor: pointer;
`;
// 继承btn
const HYPrimaryButton = styled(HYButton)`
background: blue;
`
设置主题
先引入:
import styled, { ThemeProvider } from 'styled-components';
添加主题:
<ThemeProvider theme={{themeColor:"yellow" , fontSize:"18px"}}><HyRequest left="20px" /><HYButton /><HYPrimaryButton /><Title>Hello World, this is my first styled component!</Title><div className="banner">我是轮播图</div></ThemeProvider>
使用:
const HYButton = styled.button`padding: 10px 20px;border: 1px solid red;color: ${props => props.theme.themeColor};background: ${props => props.theme.themeColor};cursor: pointer;
`;
12、axios的封装
// 开发环境的基础URL
const devBaseURL = 'https://httpbin.org';
// 生产环境的基础URL
const proBaseURL = 'https://production.org';// 根据当前环境变量,动态导出基础URL
export const BASE_URL = process.env.NODE_ENV === 'development' ? devBaseURL : proBaseURL;// 请求超时时间(毫秒)
export const TIMEOUT = 5000;import axios from 'axios';// 创建 axios 实例
const instance = axios.create({baseURL: BASE_URL,timeout: TIMEOUT,
});// 请求拦截器
instance.interceptors.request.use(config => {// 可以在这里添加 token 或其他请求头// config.headers.Authorization = 'Bearer token';return config;},error => {return Promise.reject(error);}
);// 响应拦截器
instance.interceptors.response.use(response => {// 可以在这里统一处理响应数据return response.data;},error => {// 统一错误处理return Promise.reject(error);}
);export default instance;
13、react-transition-group
npm install react-transition-group --save
13.1 CssTransition
它是CssTransition组件上写classname,搭配一个.css的文件
文件里面对应的一些节点名称:
它们有三种状态,需要定义对应的CSS样式:
- 第一类,开始状态:对于的类是-appear、-enter、exit;
- 第二类:执行动画:对应的类是-appear-active、-enter-active、-exit-active;
- 第三类:执行结束:对应的类是-appear-done、-enter-done、-exit-done;
常见的一些属性:
- in:触发进入或者退出状态
-
- 如果添加了unmountOnExit={true},那么该组件会在执行退出动画结束后被移除掉;
- 当in为true时,触发进入状态,会添加-enter、-enter-acitve的class开始执行动画,当动画执行结束后,会移除两个class,并且添加-enter-done的class;
- 当in为false时,触发退出状态,会添加-exit、-exit-active的class开始执行动画,当动画执行结束后,会移除两个class,并且添加-enter-done的class;
- classNames:动画class的名称
-
- 决定了在编写css时,对应的class名称:比如card-enter、card-enter-active、card-enter-done;
- timeout:
-
- 过渡动画的时间
- appear:
-
- 是否在初次进入添加动画(需要和in同时为true)
- unmountOnExit:退出后卸载组件
CSSTransition对应的钩子函数:主要为了检测动画的执行过程,来完成一些JavaScript的操作
- onEnter:在进入动画之前被触发;
- onEntering:在应用进入动画时被触发;
- onEntered:在应用进入动画结束后被触发;
一个小案例 :
render() {const { isShow } = this.state;return (<div><CSSTransition in={isShow} classNames="h2" timeout={500}>{(state) => (<h2style={{width: "200px",height: "300px",background: "red",transition: "all 0.5s",}}>我是一个动画</h2>)}</CSSTransition><button onClick={() => this.setState({ isShow: !this.state.isShow })}>点击</button></div>);}
注意CssTransition里面的写法
Css:
.h2-enter {opacity: 0.6;
}
.h2-enter-active {opacity: 1;transition: opacity 0.5s;
}
.h2-enter-done {opacity: 1;
}
.h2-exit {opacity: 1;
}
.h2-exit-active {opacity: 0.6;transition: opacity 0.5s;
}
.h2-exit-done {opacity: 0;
}
注意css名称的写法
nce.interceptors.request.use(
config => {
// 可以在这里添加 token 或其他请求头
// config.headers.Authorization = ‘Bearer token’;
return config;
},
error => {
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
response => {
// 可以在这里统一处理响应数据
return response.data;
},
error => {
// 统一错误处理
return Promise.reject(error);
}
);
export default instance;
## 13、react-transition-group
npm install react-transition-group --save
### 13.1 CssTransition 它是CssTransition组件上写classname,搭配一个.css的文件**文件里面对应的一些节点名称:**它们有三种状态,需要定义对应的CSS样式:- 第一类,开始状态:对于的类是-appear、-enter、exit;
- 第二类:执行动画:对应的类是-appear-active、-enter-active、-exit-active;
- 第三类:执行结束:对应的类是-appear-done、-enter-done、-exit-done;**常见的一些属性:**- in:触发进入或者退出状态
- - 如果添加了unmountOnExit={true},那么该组件会在执行退出动画结束后被移除掉;- 当in为true时,触发进入状态,会添加-enter、-enter-acitve的class开始执行动画,当动画执行结束后,会移除两个class,并且添加-enter-done的class;- 当in为false时,触发退出状态,会添加-exit、-exit-active的class开始执行动画,当动画执行结束后,会移除两个class,并且添加-enter-done的class;
- classNames:动画class的名称
- - 决定了在编写css时,对应的class名称:比如card-enter、card-enter-active、card-enter-done;
- timeout:
- - 过渡动画的时间
- appear:
- - 是否在初次进入添加动画(需要和in同时为true)
- unmountOnExit:退出后卸载组件CSSTransition对应的钩子函数:主要为了检测动画的执行过程,来完成一些JavaScript的操作- onEnter:在进入动画之前被触发;
- onEntering:在应用进入动画时被触发;
- onEntered:在应用进入动画结束后被触发;**一个小案例 :**
render() {
const { isShow } = this.state;
return (
{(state) => (
<h2
style={{
width: “200px”,
height: “300px”,
background: “red”,
transition: “all 0.5s”,
}}
>
我是一个动画
)}
<button onClick={() => this.setState({ isShow: !this.state.isShow })}>
点击
);
}
注意CssTransition里面的写法**Css:**
.h2-enter {
opacity: 0.6;
}
.h2-enter-active {
opacity: 1;
transition: opacity 0.5s;
}
.h2-enter-done {
opacity: 1;
}
.h2-exit {
opacity: 1;
}
.h2-exit-active {
opacity: 0.6;
transition: opacity 0.5s;
}
.h2-exit-done {
opacity: 0;
}
注意css名称的写法
相关文章:
React---day9
11、css 11.1 styled的基本使用 CSS-in-JS的模式就是一种将样式(CSS)也写入到JavaScript中的方式,并且可以方便的使用JavaScript的状态; npm add styled-componentsconst Title styled.h1font-size: 1.5em;text-align: center…...
设计模式 - 模板方法模式
该模式将定义一个操作中的算法骨架,并将算法的一些步骤延迟到子类中实现,使得子类可以在不改变算法结构的情况下重定义算法的某些特定步骤。 例如,炒菜的步骤是固定的,具体可分为倒油、热油、倒蔬菜、倒调料品、翻炒等。通过模板…...

鸿蒙开发List滑动每项标题切换悬停
鸿蒙开发List滑动每项标题切换悬停 鸿蒙List滑动每项标题切换悬停,功能也很常见 一、效果图: 二、思路: ListItemGroup({ header: this.itemHead(secondClassify, index) }) 三、关键代码: build() {Column() {List() {ListIt…...

ubuntu开机自动挂载windows下的硬盘
我是ubuntu和windows的双系统开发,在ubuntu下如果想要访问windows的硬盘,需要手动点击硬盘进行挂载,这个硬盘我每次编译完都会使用,所以用下面的步骤简化操作,让系统每次开机后自动挂载。 第一步. 确定硬盘的设备标识…...
C# 实现软件开机自启动(不需要管理员权限)
本文参考C#/WPF/WinForm/程序实现软件开机自动启动的两种常用方法,将里面中的第一种方法做了封装成AutoStart类,使用时直接两三行代码就可以搞定。 自启动的原理是将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限࿰…...

使用 Golang `testing/quick` 包进行高效随机测试的实战指南
使用 Golang testing/quick 包进行高效随机测试的实战指南 Golang testing/quick 包概述testing/quick 包的功能和用途为什么选择 testing/quick 进行测试快速入门:基本用法导入 testing/quick 包基本使用示例:快速生成测试数据quick.Check 和 quick.Val…...

32 C 语言字符处理函数详解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace
1 isalnum() 函数 1.1 函数原型 #include <ctype.h>int isalnum(int c); 1.2 功能说明 isalnum() 函数用于检查传入的整数参数是否为 ASCII 编码的字母或数字字符(A - Z、a - z、0 - 9,对应 ASCII 值 65 - 90、97 - 122、48 - 57)。…...

Qt实现一个悬浮工具箱源码分享
一、效果展示 二、源码分享 hoverToolboxWidget.h #ifndef HOVERTOOLBOXWIDGET_H #define HOVERTOOLBOXWIDGET_H#include <QWidget> #include <QMouseEvent> #include <QPropertyAnimation> #include <QStyleOption> #include <QPainter>namespa…...

线夹金具测温在线监测装置:电力设备安全运行的“隐形卫士”
在电网系统中,线夹金具是连接导线与输电塔架的关键部件,其运行状态直接影响电力传输的稳定性。传统人工巡检方式存在效率低、盲区多、数据滞后等问题,而线夹金具测温在线监测装置的普及,正为电力设备运维带来革新。 一、工作原理&…...

《TCP/IP 详解 卷1:协议》第4章:地址解析协议
ARP 协议 地址解析协议(ARP, Address Resolution Protocol)是IPv4协议栈中一个关键的组成部分,用于在网络层的IP地址与数据链路层的硬件地址(如MAC地址)之间建立映射关系。它的主要任务是: 将32位的IPv4地…...
Dify 离线升级操作手册(适用于无外网企业内网环境)
一、准备工作 准备一台能访问互联网的外网机器 用于拉取最新的 Dify 镜像和代码建议使用 Linux 或 Windows Docker 环境 准备传输介质 U盘、移动硬盘,或企业内部网络共享路径 确认当前内网 Dify 版本和配置 确认版本号,备份配置文件和数据库 二、外…...

Windows下运行Redis并设置为开机自启的服务
下载Redis-Windows 点击redis-windows-7.4.0下载链接下载Redis 解压之后得到如下文件 右键install_redis.cmd文件,选择在记事本中编辑。 将这里改为redis.windows.conf后保存,退出记事本,右键后选择以管理员身份运行。 在任务管理器中能够…...

网络编程之网络基础
基础理论:IP、子网掩码、端口号、字节序、网络基础模型、传输协议 socket:TCP、UDP、广播、组播、抓包工具的使用、协议头、并发服务器 Modbus协议 、HTTP协议、HTML、 分析服务器 源码、数据库 一、认识网络 网络:实现多设备通信 二、IP地址…...

Spring AI(11)——SSE传输的MCP服务端
WebMVC的服务器传输 支持SSE(Server-Sent Events) 基于 Spring MVC 的服务器传输和可选的STDIO运输 导入jar <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</a…...

计算机网络备忘录
计算机网络 - 网络互联与互联网 计算机网络重点学习本章,属于核心知识 包含网络层和传输层 的 相关协议 计算机网络层次重点掌握网络层与传输层。其中网络层主要是IP协议,解决主机-主机通信,传输层主要是TCP/UDP 协议,解决应用-…...

Spring Boot论文翻译防丢失 From船长cap
本文内容 微服务 微服务风格的特性组件化(Componentization )与服务(Services)围绕业务功能的组织产品不是项目强化终端及弱化通道分散治理分散数据管理基础设施自动化容错性设计设计改进 微服务是未来吗其它 微服务系统多大微…...
[蓝桥杯]最优包含
最优包含 题目描述 我们称一个字符串 SS 包含字符串 TT 是指 TT 是 SS 的一个子序列,即可以从字符串 SS 中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与 TT 完全一样。 给定两个字符串 SS 和 TT,请问最少修改 SS 中的多少个字符…...

NuxtJS入门指南:环境安装及报错解决
在学习NuxtJS的过程中,正确的安装环境是非常重要的一步。然而,有时候在安装过程中会遇到一些问题,比如使用corepack安装pnpm时出现的错误。本文将详细介绍如何安装NuxtJS以及解决上述安装过程中遇到的问题。 Nuxt.js简介 Nuxt.js是一个强大的…...
在java 项目 springboot3.3 中 调用第三方接口(乙方),如何做到幂等操作(调用方为甲方,被调用方为乙方)? 以及啥是幂等操作?
什么是幂等操作? 幂等性(Idempotence) 是指一个操作无论执行一次还是多次,对系统状态产生的影响都是相同的。在分布式系统中,由于网络不稳定、超时重试等因素,接口可能被重复调用,幂等设计能确…...

贪心算法应用:集合划分问题详解
贪心算法与集合划分问题详解 集合划分问题是组合优化中的经典问题,其核心目标是将元素集合划分为若干满足特定条件的子集。本文将深入探讨贪心算法在集合划分中的应用,涵盖算法原理、适用场景、Java实现细节及优化策略。 一、集合划分问题定义 1.1 基础…...
electron下载文件
const http require(http); const https require(https); const fs require(fs); const { URL } require(url); const path require(path);// 下载文件函数 function downloadFile(url, savePath) {return new Promise((resolve, reject) > {try {console.log(开始下载…...
Neo4j 数据导入:原理、技术、技巧与最佳实践
在构建知识图谱、社交网络分析或复杂关系系统时,高效准确地将数据导入Neo4j图数据库至关重要。本文基于官方文档,深入探讨Neo4j数据导入的核心原理、主流技术、实用技巧及行业最佳实践。 Neo4j的数据导入不仅是技术操作,更是图模型设计的延续。深入理解存储原理、灵活运用C…...

数论~~~
质数 质数Miller-Rabin算法质因子分解质数筛埃氏筛欧拉筛如果只是计数,埃氏筛改进 快速幂乘法快速幂矩阵快速幂1维k阶实战(提醒:最好在mul函数中作乘法时加上(long long)的强制类型转换 ,或者全部数组换成long long&am…...

web第十次课后作业--Mybatis的增删改查
(一)删除操作 功能:根据主键删除数据 SQL 语句 -- 删除id17的数据 delete from emp where id 17;Mybatis 框架让程序员更关注于 SQL 语句 接口方法 Mapper public interface EmpMapper {//Delete("delete from emp where id 17&qu…...

贪心算法应用:集合覆盖问题详解
贪心算法与集合覆盖问题详解 贪心算法在组合优化问题中展现出独特优势,集合覆盖问题(Set Cover Problem)是其中的经典案例。本文将用2万字全面解析贪心算法在集合覆盖/划分中的应用,涵盖算法原理、正确性分析、Java实现、复杂度证…...
BLOB 是用来存“二进制大文件”的字段类型
BLOB 是用来存“二进制大文件”的字段类型,可以存 0 到 65535 字节的数据,常用来存图片、音频、PDF、Word 等“非文本”内容。 BLOB 0-65535 bytes 二进制形式的长文本数据✅ 关键词 1:BLOB 全称:Binary Large Object中文&…...
5.Declare_Query_Checking.ipynb
这个教程 5.Declare_Query_Checking.ipynb 主要讲解了如何使用 DECLARE 查询检查器来分析事件日志中的约束关系。 1. 主要功能 这个教程展示了如何使用 DeclareQueryChecker 来: 发现事件日志中满足特定支持度的约束模式查询不同类型的约束关系分析活动之间的关联…...

【知识点】第7章:文件和数据格式化
文章目录 知识点整理文件概述文件的打开和关闭文件的读操作文件的写操作 练习题填空题选择题 知识点整理 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似地,函…...

NetSuite Bundle - Dashboard Refresh
儿童节快乐! 今朝发一个Bundle,解决一个NetSuite Dashboard的老问题。出于性能上的考虑,NetSuite的Dashboard中的Portlet,只能逐一手工刷新。有人基于浏览器做了插件,可以进行自动刷新。但是在我们做项目部署时&#…...
AI+3D 视觉重塑塑料袋拆垛新范式:迁移科技解锁工业自动化新高度
在工业自动化浪潮席卷全球的当下,仓储物流环节的效率与精准度成为企业降本增效的关键战场。其中,塑料袋拆垛作为高频、高重复性的作业场景,传统人工或机械臂操作面临着诸多挑战。迁移科技,作为行业领先的 3D 工业相机和 3D 视觉系…...