当前位置: 首页 > news >正文

react基础

react组件传参

父传子

父组件
< ChildA value={this.state.num}></ChildA>
子组件
{props.value}接收父组件传入参数
ChildA.defaultProps={vaue:1}
defaultProps默认参数

子传父

props+回调函数形式

setNum=>v=>this.setState({num:v}) v形参
< ChildA value={this.state.num} setNum={this.setNum} />

<button onClick={()=>props.setNum(100)}></button>
通过props调用父组件传入的方法

跨组件

context上下文
提供Context.provider
使用Context.consumer

全局状态管理

redux
mobx

组件插槽

子组件通过{props.children}获取插槽内容

react生命周期

挂载阶段

01 构造函数constructor
02 static getDerivedStateFromProps(nextProps,prevState)props和 state更新会执行
03 render 函数渲染
04 componentDidMount() 组件已经挂载(dom渲染完成)
时间监听 dom操作 ajax 定时器

更新阶段

01 static getDerivedStateFromProps(nextProps,prevState)state和props更新时候会触发
02 shouldComponentUpdate(nextProps,nextState)组件是否更新
返回true执行渲染更新,返回false不渲染(优化)
03 render 渲染函数
04 getSnapshotBeforeUpdate(prevProps,prevState)
更新前获取快照,返回值是cdu的第三个参数
05 ==componentDidUpdate(prevProps,prevState,snap)==组件已经更新 (dom渲染完毕)

卸载阶段

componentWillUnmount 组件将要卸载

优化

shouldComponentUpdate组件里面

this.state和prevState
this.props和prev
Props返回true更新 返回false就不更新
可以比较值类型,也可以比较引用类型

PureComponent 实现

自动比较值类型props
PureComponent是一个React特有的组件,用于优化性能的更新。
它具有与React.Component相同的API,但它内部实现了一个 shouldComponentUpdate(),它会浅比较 props 和 state,以确定 UI 更新是否有必要。如果比较的结果没有发生变化,PureComponent 将跳过更新。

而Component则不会,它会每次都重新渲染,因此性能上会比PureComponent差。

组件

函数组件

props
类组件(有props state 生命周期 ref this)
推荐使用函数组件,函数组件只有props,不依赖state 适应性更强,更解构,
提高组件的复用性
也叫视图组件

类组件

state this 有限定组件的复用

Hooks

useState 使用状态

作用:模拟状态
导入
import {useState} from 'react'
使用
const [num,setNum]=useState(5)
num数据 setNum更新num数据的方法 5默认值
调用num:{num}
更新num:<button onClick={()=>setNum(num+2)}>

useEffect使用副作用

作用:模拟生命周期
模拟挂载完毕 写空的数组

//   写空的数组是挂载  useEffect(()=>{// console.log("组件已经加载完毕:ajax dom操作 定时器 事件挂载");fetch("http://dida100.com/mi/list.php").then(res=>res.json()).then(res=>{console.log(res.result,"数据获取");setList(res.result)})},[])
模拟某些数据的更新+挂载 写第二个参数
// 挂载和更新 写第二个参数// useEffect(()=>{//   console.log("count 已经更新");// },[count,list])
模拟任意数据的挂载+更新
useEffect(()=>{console.log("任意数据的更新");})
模拟组件将要卸载
useEffect(()=>{return ()=>{//模拟组件将要卸载},[])

相关文章:

react基础

react组件传参 父传子 父组件 < ChildA value{this.state.num}></ChildA> 子组件 {props.value}接收父组件传入参数 ChildA.defaultProps{vaue:1} defaultProps默认参数 子传父 props回调函数形式 父 setNum>v>this.setState({num:v}) v形参 < ChildA…...

【Spark分布式内存计算框架——Spark SQL】2. SparkSQL 概述(上)

第二章 SparkSQL 概述 Spark SQL允许开发人员直接处理RDD&#xff0c;同时可以查询在Hive上存储的外部数据。Spark SQL的一个重要特点就是能够统一处理关系表和RDD&#xff0c;使得开发人员可以轻松的使用SQL命令进行外部查询&#xff0c;同时进行更加复杂的数据分析。 2.1 前…...

Kubeadm搭建K8S

目录 一、部署步骤 1、实验环境 2、环境准备 3、所有节点安装Docker 4、 所有节点配置K8S源 5、所有节点安装kubeadm&#xff0c;kubelet和kubectl 6、部署 kubernetes Master 节点 7、token制作 8、k8s-node节点加入master节点 9、 master节点安装部署pod网络插件&a…...

【技术分享】搭建java项目引入外部依赖教程

文章目录引言如何在linux中编译运行java程序IDEA中新建一个简单的java工程项目并运行IDEA中如何引入外部依赖并运行maven引入log4j jar包手工引入log4j jar包如何使用命令行的方式添加外部依赖如何新建一个spring源码项目并为其添加依赖给定一个spring工程源码&#xff0c;如何…...

算法 ——世界 二

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…...

数据治理CDGP选择题 4

5、根据DMBOK2&#xff0c;在实施数据治理时&#xff0c;要注重数据标准的建设&#xff0c;以下关于数据标准的描述&#xff0c;哪个选项是不正确的? (知识点: CDGP仿真题)A.数据标准必须得到有效沟通、监控&#xff0c;并被定期审查和更新;最重要的是&#xff0c;必须有强制手…...

动态规划之01背包问题和完全背包问题

01背包的问题描述&#xff1a;&#xff08;内容参考代码随想录&#xff09;有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。问题示例&#…...

MATLAB算法实战应用案例精讲-【图像处理】数字图像灰度化(附Java、python、matlab和opencv代码实现)

目录 前言 几个相关概念 1、RGB 2、ARGB 3、灰度化 4.图像点运算 5.线性点运算...

Linux(强大的yum命令)

yum 读 [jʌm] &#xff0c;中文谐音&#xff1a; 样安ing。 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#x…...

28.结语

文章目录28 Epilogue 结语28 Epilogue 结语 Don’t let it end like this. Tell them I said something. 不要让它就这样结束。 告诉他们我说了些什么 —Pancho Villa 您已到达旅程的尽头。 辛苦了 我们希望您能从本书中找到一些有价值的收获。 我们建议该列表应包括以下内…...

ICRS、GCRS、CIRS、TIRS和ITRS坐标系统简介

ICRS、GCRS、CIRS、TIRS和ITRS坐标系统简介1. 简介2. ICRS、GCRS、CIRS、TIRS和ITRS分别介绍2.1 ICRS详细说明2.2 GCRS详细说明2.3 CIRS详细说明2.4 TIRS详细说明2.5 ITRS 详细说明1. 简介 ICRS、GCRS、CIRS、TIRS和ITRS都是天文学中使用的坐标系统&#xff1a; ICRS (Intern…...

你是真的“C”——详解结构体知识点

你是真的“C”——详解结构体知识点&#x1f60e;前言&#x1f64c;什么是结构体&#xff1f;&#x1f64c;1. 结构体的声明&#x1f64c;1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的定义和初始化2. 结构体成员的访问&#x1f64c;3结构体传参&#x…...

2023新华为OD机试题 - 单词接龙(JavaScript) | 刷完必过

单词接龙 题目 单词接龙的规则是: 可用于接龙的单词,首字母必须要与前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取长度最长的单词; 如果长度也相等,则取字典序最小的单词; 已经参与接龙的单词不能重复使用; 现给定一组全部由小写字母组成的单词数组, 并指…...

第一章 一般错误信息 - 错误代码 0 到 99

文章目录第一章 一般错误信息 - 错误代码 0 到 99一般错误信息错误代码 0 到 99第一章 一般错误信息 - 错误代码 0 到 99 一般错误信息 错误代码被报告为 ERROR #nnn。这些错误代码有时称为 %Status 错误代码。 可以使用 DisplayError() 和 Error() 方法确定指定错误代码的错…...

MyBatis 之一(概念、创建项目、操作模式、交互流程)

1. MyBatis 是什么MyBatis 是一款优秀的持久层框架MyBatis 也是一个 ORM &#xff08;Object Relational Mapping&#xff09;框架&#xff0c;即对象关系映射它支持自定义 SQL、存储过程以及高级映射MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作MyBatis…...

学习笔记:文件

因为有的数据&#xff0c;数据量极大。或者是你想把编译输出的内容存储起来&#xff0c;就可以使用文件 读文件中内容具体操作 来自C语言详解 FILE文件操作 - 知乎 (zhihu.com) 写入文件具体操作 同样来自 C语言详解 FILE文件操作 - 知乎 (zhihu.com) 当文件关闭时&#xff0c…...

高考结束了以后应该做的事情(个人经历的总结)

高考结束了以后应该做的事情 在本指导中&#xff0c;我总结了我大学期间我认为做的没有后悔&#xff0c;最正确的事情。同时&#xff0c;根据我的经历和我踩过的坑总结出来了这一份入学指南。 这个指导有点偏向于工科生&#xff0c;已经尽量偏向于所有专业了。对于所有专业的同…...

蓝桥杯:k倍区间

[蓝桥杯 2017 省 B] k 倍区间给定一个长度为 N 的数列&#xff0c;A1,A2,…AN&#xff0c;如果其中一段连续的子序列 Ai,Ai1,…Aj 之和是 K 的倍数&#xff0c;我们就称这个区间 [i,j] 是 K 倍区间。你能求出数列中总共有多少个 K 倍区间吗&#xff1f;输入格式第一行包含两个整…...

【思维模型】概率思维的价值:找到你的人生算法!打开你的人生格局!实现认知跃迁!

把同样公平的机会放在放在很多人面前,不同的人生算法,会得到迥然不同的结果。 概率思维是什么? 【ChatGPT】概率思维是一种通过使用数学模型来思考和评估不确定性事件的方法。它通过计算不同可能性的概率来预测事件的结果,并评估风险和机会。 概率思维的价值在于它可以帮…...

API文档自动生成工具

一、参考资料 从Python源码注释&#xff0c;自动生成API文档 二、问题引入 不管是开源还是闭源&#xff0c;要让所有人都能读懂你的代码这太难了&#xff0c;所以文档是很重要的。大部分情况&#xff0c;我们不希望维护一份代码再加上一份文档&#xff0c;这样做很容易造成文…...

7、MyBatis框架——MyBatis对一对一关系的处理、分步查询、MyBatis对一对多关系的处理

目录 一、项目框架搭建 二、在实体类中添加额外属性实现多表查询 1、mybatis两表关联查询 &#xff08;1&#xff09;实体类类型映射规则 &#xff08;2&#xff09;代码演示 2、分步查询 &#xff08;1&#xff09;autoMapping开启自动映射 &#xff08;2&#xff09;…...

电商数据监测——中国白酒行业数据浅析

大国盛世酿,万家潭酒香。中国白酒是中国特色文化之一。 2022年&#xff0c;国内白酒总产量为671.2万千升&#xff0c;处于持续下滑的态势。 白酒产量不佳&#xff0c;但线上平台的销售情况却成绩优异。2022年&#xff0c;京东平台白酒的年度总销量超3500万件&#xff0c;同比去…...

excel数据技巧:透视表快速统计年终业绩排名

年关了&#xff0c;各种数据多得要命&#xff0c;要汇总&#xff0c;要排名&#xff0c;这样才好颁奖发红包。今天&#xff0c;数据透视表出来为Excel人送温暖了&#xff0c;不用分两步做&#xff0c;鼠标拖两下&#xff0c;同步搞定业绩统计与排名。临近年末&#xff0c;各行各…...

TensorRT的Python接口解析

TensorRT的Python接口解析 文章目录TensorRT的Python接口解析4.1. The Build Phase4.1.1. Creating a Network Definition in Python4.1.2. Importing a Model using the ONNX Parser4.1.3. Building an Engine4.2. Deserializing a Plan4.3. Performing Inference点此链接加入…...

【信管11.5】合同、采购、招投标相关法规

合同、采购、招投标相关法规关于法律法规相关的内容&#xff0c;其实并没什么可以多说的&#xff0c;我也只是列出来&#xff0c;大家挑着背吧。当然&#xff0c;这里也不都是完完全全的法律条文&#xff0c;有一些也可能是一些归纳总结。更具体的内容大家可以参考教材以及查阅…...

使用 CSS 变量更改多个元素样式

使用 CSS 变量更改多个元素样式 var() 函数用于插入自定义的属性值&#xff0c;如果一个属性值在多处被使用&#xff0c;该方法就很有用。 custom-property-name 是必需的, 自定义属性的名称&#xff0c;必需以 – 开头。 value 可选。备用值&#xff0c;在属性不存在的时候使…...

面试题(二十五)设计模式

1. 设计模式 1.1 说一说设计模式的六大原则 参考答案 单一职责原则 一个类&#xff0c;应当只有一个引起它变化的原因&#xff1b;即一个类应该只有一个职责。 就一个类而言&#xff0c;应该只专注于做一件事和仅有一个引起变化的原因&#xff0c;这就是所谓的单一职责原则…...

使用红黑树模拟实现map和set

在STL的源代码中&#xff0c;map和set的底层原理都是红黑树。但这颗红黑树跟我们单独写的红黑树不一样&#xff0c;它需要改造一下&#xff1a; 改造红黑树 节点的定义 因为map和set的底层都是红黑树。而且map是拥有键值对pair<K,V>的&#xff0c;而set是没有键值对&a…...

【django项目开发】用户登录后缓存权限到redis中(十)

这里写目录标题一、权限的数据的特点二、首先settings.py文件中配置redis连接redis数据库一、权限的数据的特点 需要去数据库中频繁的读和写&#xff0c;为了项目提高运行效率&#xff0c;可以把用户的权限在每次登录的时候都缓存到redis中。这样的话&#xff0c;权限判断的中…...

算法总结c++

文章目录基本概念时间复杂度空间复杂度基本结构1. 数组前缀和差分数组快慢指针(索引)左右指针&#xff08;索引&#xff09;盛水容器三数之和最长回文子串2. 链表双指针删除链表的倒数第 n 个结点翻转链表递归将两个升序链表合并为一个新的 升序 链表链表翻转3. 散列表twoSum无…...

英语可以做推广的亲子类网站/南京seo网络推广

oracle中Where子句的条件顺序对性能的影响 - Oracle - 网站开发-技术教程-中国素材网 经常有人问到oracle中的Where子句的条件书写顺序是否对SQL性能有影响&#xff0c;我的直觉是没有影响&#xff0c;因为如果这个顺序有影响&#xff0c;Oracle应该早就能够做到自动优化&#…...

深圳建设银行网站首页/做网上推广

【目录】本文主要讲解Tomcat启动和部署webapp时的原理和过程&#xff0c;以及其使用的配置文件的详解。主要有三大部分&#xff1a; 第一部分、Tomcat的简介和启动过程 第二部分、Tomcat部署webapp 第三部分、Tomcat处理一个http请求的过程 【简介】 Tomcat依赖/conf/serve…...

用python做网站多吗/深圳网站建设系统

ADO.NET Entity Framework 入门示例向导&#xff08;附Demo程序下载&#xff09;- 系列2本篇文章在《ADO.NET Entity Framework 入门示例向导&#xff08;附Demo程序下载&#xff09;》基础上&#xff0c;进一步演示如何使用EntityClient 新数据提供程序、对象服务&#xff08;…...

化州网站建设/网络整合营销公司

PL/SQL(Procedural Language extensions to SQL)是Oracle 对标准 SQL 语言的过程化扩展&#xff0c;是专门用于各种环境下对 Oracle 数据库进行访问和开发的语言。 一、概述 Oracle数据库对标准的SQL 语言进行了扩展&#xff0c;将 SQL 语言的非过程化与第三代开发语言的过程化…...

交互式网站开发技术有哪些/苏州排名搜索优化

3.为什么蛇没有脚都能走路?么蛇没有脚都能走路?蛇的身上有很多鳞片,这是它们身上最外面的一层盔甲.鳞片不但用来保护 身体,还可以是它们的"脚" .蛇向前爬行时,身体会呈 S 形.而每一片在 S 形外边的鳞片,都会翘起来,帮助蛇前进时抓住不平的路面.这些鳞片跟蛇的肌肉互…...

wordpress密码原理/免费网站在线客服系统源码

摄影&#xff1a;产品经理厨师&#xff1a;产品经理当我们要批量读取多个文件所有内容&#xff0c;并把所有行打印出来时&#xff0c;我们可能会这样写代码&#xff1a;file_list [1.txt, 2.txt, 3.txt]for path in file_list:with open(path, encodingutf-8) as f:for line i…...