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

React Hooks之useState、useRef

文章目录

  • React Hooks之useState
    • React Hooks
    • useState
      • demo:在函数式组件中使用 useState Hook 管理计数器
      • demo:ant-design-pro 中EditableProTable组件使用
    • useRef

React Hooks之useState

React Hooks

在 React 16.8 版本中引入了 Hooks,它是一项新的特性,使得我们在函数组件中可以使用状态(state)和其他 React 特性,而无需编写类组件。

Hook 是一些可以让你在函数组件中“钩入” React 状态及生命周期等特性的函数,它可用于增强函数组件的功能,以解决类组件难以解决的问题。

useState

在 React 中,我们可以使用 useState Hook 来管理函数组件的内部状态。

useState 是一种 Hook,它接收一个初始状态值,并返回一个由当前状态值以及一个更新状态值的函数组成的数组。通常,我们将 useState 的返回值解构为数组的形式,然后使用 ES6 数组解构的方式获取当前状态值和更新状态值的函数。

demo:在函数式组件中使用 useState Hook 管理计数器

以下是一个简单的例子,在函数式组件中使用 useState Hook 管理计数器的状态:

import React, { useState } from 'react'function Counter() {const [count, setCount] = useState(0)return (<div><p>Count: {count}</p><button onClick={() => setCount(count + 1)}>+1</button><button onClick={() => setCount(count - 1)}>-1</button></div>)
}export default Counter
  • 在 Counter 组件中调用 useState Hook,初始化计数器的状态值为 0。
  • count 表示当前状态的值,setCount 表示更新状态的函数。
  • 在 JSX 中,我们可以通过 { count } 的方式引用当前状态值,通过 { () => setCount(count + 1) } 的方式更新状态值。
  • 每次更新状态后,React 都会重新渲染组件使其展示新的页面。

demo:ant-design-pro 中EditableProTable组件使用

上一个例子结构比较简单,

  const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() => []);

这段代码使用了 React 的 useState 钩子函数,创建了名为 editableKeys 的状态和一个名为 setEditableRowKeys 的状态更新函数。并且初始值为空数组 []。

通过使用 editableKeys 和 setEditableRowKeys,你可以在组件中追踪和更新可编辑行的 key 值。通常情况下,当你添加、删除或修改可编辑行时,会使用 setEditableRowKeys 更新 editableKeys 的值,从而触发组件的重新渲染,并确保表格中的可编辑行与 editableKeys 的值保持同步。

useRef

useRef 是 React 中的一个 Hook,用于创建一个可变的引用(即 Ref),可以用来存储和访问组件或 DOM 元素的引用。

使用 useRef 创建的引用具有以下特点:

  • 引用的值发生改变时,不会触发组件的重新渲染
  • 可以通过 .current 属性访问引用的值,并且对其进行修改。
  • 可以在函数组件和类组件中使用。

虽然 useRef 创建的引用与普通的 JavaScript 引用类型类似,但它并不是一个对象,而是一个包含 .current 属性的简单对象。因此,如果你想要在组件之间共享状态,建议使用 useState 或其他状态管理库。

  const formRef = useRef<ProFormInstance<any>>();  

useRef 被用于创建一个名为 formRef 的引用,它的类型是 ProFormInstance。这个 formRef 变量将被传递给 组件的 formRef 属性,以便获取表单实例并进行后续操作。

这里useRef 主要是为了获取和操作 组件的表单实例。

通过给 组件传递 formRef 属性,并将其设置为 useRef 创建的引用,可以将表单实例保存到 formRef.current 中。这样,你就可以在组件的其他地方访问和操作表单实例,而无需将其作为 props 传递。

useRef 的主要作用是在函数组件中存储可变值,而且不会引起组件重新渲染。

相关文章:

React Hooks之useState、useRef

文章目录 React Hooks之useStateReact HooksuseStatedemo&#xff1a;在函数式组件中使用 useState Hook 管理计数器demo&#xff1a;ant-design-pro 中EditableProTable组件使用 useRef React Hooks之useState React Hooks 在 React 16.8 版本中引入了 Hooks&#xff0c;它是…...

提供电商Api接口-100种接口,淘宝,1688,抖音商品详情数据安全,稳定,支持高并发

Java是一种高级编程语言&#xff0c;由Sun Microsystems公司于1995年推出&#xff0c;现在属于Oracle公司开发和维护。Java以平台无关性、面向对象、安全性、可移植性和高性能著称&#xff0c;广泛用于桌面应用程序、嵌入式系统、企业级服务、Android移动应用程序等。 接口是Ja…...

git的使用 笔记1

GIT git的使用 使用git提交的两步 第一步&#xff1a;是使用 git add 把文件添加进去&#xff0c;实际上就是把文件添加到暂存区。第二步&#xff1a;使用git commit提交更改&#xff0c;实际上就是把暂存区的所有内容提交到当前分支上。 .git 跟踪管理版本的目录 创建版本库…...

基于SpringBoot的医疗挂号管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的医疗挂号管理系统,java…...

prometheus与zabbix监控的对比介绍

一、普米与zabbix基本介绍 1、prometheus介绍 Prometheus的基本原理是Prometheus Server通过HTTP周期性抓取被监控组件的监控数据&#xff0c;任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式&#xff0c;就可以接入Prometheus监控。 工作流程大致分为收集数…...

详解全志R128 RTOS安全方案功能

介绍 R128 下安全方案的功能。安全完整的方案基于标准方案扩展&#xff0c;覆盖硬件安全、硬件加解密引擎、安全启动、安全系统、安全存储等方面。 配置文件相关 本文涉及到一些配置文件&#xff0c;在此进行说明。 env*.cfg配置文件路径&#xff1a; board/<chip>/&…...

【MySQL】WITH AS 用法以及 ROW_NUMBER 函数 和 自增ID 的巧用

力扣题 1、题目地址 601. 体育馆的人流量 2、模拟表 表&#xff1a;Stadium Column NameTypeidintvisit_datedatepeopleint visit_date 是该表中具有唯一值的列。每日人流量信息被记录在这三列信息中&#xff1a;序号 (id)、日期 (visit_date)、 人流量 (people)每天只有…...

基于SpringBoot的在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化管理。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通…...

基于Spring Boot的美妆分享系统:打造个性化推荐、互动社区与智能决策

基于Spring Boot的美妆分享系统&#xff1a;打造个性化推荐、互动社区与智能决策 1. 项目介绍2. 管理员功能2.1 美妆管理2.2 页面管理2.3 链接管理2.4 评论管理2.5 用户管理2.6 公告管理 3. 用户功能3.1 登录注册3.2 分享商品3.3 问答3.4 我的分享3.5 我的收藏夹 4. 创新点4.1 …...

Axure医疗-住院板块,住院患者原型预览,新增医护人员原型预览,新增病房原型预览,选择床位原型预览,主治医生原型预览,主治医生医嘱原型预览

目录 一.医疗项目原型图-----住院板块 1.1 住院板块原型预览 1.2 新增住院患者原型预览 1.3 新增医护人员原型预览 1.4 新增病房原型预览 1.5 选择床位原型预览 1.6 主治医生原型预览 1.7 主治医生医嘱原型预览 1.8 主治医生查看患者报告原型预览 1.9 护士原型预…...

前端实战第一期:悬浮动画

悬浮动画 像这样的悬浮动画该怎么做&#xff0c;让我们按照以下步骤完成 步骤&#xff1a; 先把HTML内容做起来&#xff0c;用button属性创建一个按钮&#xff0c;按钮内写上悬浮效果 <button classbtn>悬浮动画</button>在style标签内设置样式,先设置盒子大小&…...

Python学习笔记(五)函数、异常处理

目录 函数 函数的参数与传递方式 异常处理 函数 函数是将代码封装起来&#xff0c;实现代码复用的目的 函数的命名规则——同变量命名规则&#xff1a; 不能中文、数字不能开头、不能使用空格、不能使用关键字 #最简单的定义函数 user_list[] def fun(): #定义一个函数&…...

Vue实现模糊查询

在Vue中实现模糊查询&#xff0c;你可以使用JavaScript的filter和includes方法&#xff0c;结合Vue的v-for指令。下面是一个简单的例子&#xff1a; 首先&#xff0c;你需要在你的Vue实例中定义一个数据数组和一个查询字符串。 data() { return { items: [Apple, Banana, Che…...

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…...

主板部件

▶1.主要部件 主板是计算机的重要部件&#xff0c;主板由集成电路芯片、电子元器件、电路系统、各种总线插座和接口组成&#xff0c;目前主板标准为ATX。主板的主要功能是传输各种电子信号&#xff0c;部分芯片负责初步处理一些外围数据。不同类型的CPU,需要不同主板与之匹配。…...

2023年度学习总结

想想大一刚开始在CSDN写作&#xff0c;这一坚持&#xff0c;就是我在CSDN的第九个年头&#xff0c;这也是在CSDN最有里程碑的一年&#xff0c;这一年我被评为CSDN的博客专家啦&#xff01;先是被评为Unity开发领域新星创作者&#xff0c;写的关于一部分Unity开发的心得获得大家…...

服务器感染了.kann勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 勒索病毒成为当前网络安全领域的一大威胁。.kann勒索病毒是其中的一种变种&#xff0c;对用户的数据造成了极大的威胁。本文91数据恢复将介绍.kann勒索病毒的特征、应对策略以及预防措施&#xff0c;以帮助用户更好地保护个人和组织的数据安全。当面对被勒索…...

使用results.csv文件数据绘制mAP对比图

yolov5每次train完成&#xff08;如果没有中途退出&#xff09;都会在run目录下生成expX目录&#xff08;X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推&#xff09;。expX目录下会保存训练生成的weights以及result.txt文件&#xff0c;其中weights是训练…...

【算法刷题】## 算法题目第1讲:双指针处理数组题目 带视频讲解

算法题目第一讲&#xff1a;双指针处理数组题目 解决力扣&#xff1a; [344. 反转字符串][167. 两数之和 II - 输入有序数组][26. 删除有序数组中的重复项][27. 移除元素][283. 移动零][5. 最长回文子串] 配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P…...

达梦数据:数字化时代,国产数据库第一股终于到来?

又是新的一年开始。回首一年前的此时&#xff0c;在大家千呼万唤地期待中&#xff0c;数据基础制度体系的纲领性文件正式发布。 时隔一年之后&#xff0c;数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;各行各业海量数据巨大的…...

selenium4.0中常见操作方式50条

前阵子升级了py3.9&#xff0c;一些常年陪伴的库也都做了升级&#xff0c;不少命令也更新了&#xff0c;适度更新一下记忆。 1. 打开浏览器&#xff1a;driver webdriver.Chrome() 2. 访问网址&#xff1a;driver.get("Example Domain") 3. 获取当前网址&#xff…...

如何解决使用融云音视频时由于库冲突导致编译不通过的问题

音视频库里面使用了一些第三方库&#xff0c;比如 openssl&#xff0c;libopencore-amrnb 等第三方库&#xff0c;如果集成的过程中遇到冲突可以尝试这样修改&#xff1a; 1、在 Build Settings 中 Other Linker Flags 中把 -all_load 去掉&#xff1b; 2、如果遇到 openssl 库…...

ISP 基础知识积累

Amber&#xff1a;现有工作必要的技术补充&#xff0c;认识需要不断深入&#xff0c;这个文档后续还会增加内容进行完善。 镜头成像资料 ——干货满满&#xff0c;看懂了这四篇文章&#xff0c;下面的问题基本都能解答 看完思考 1、ISP 是什么&#xff0c;有什么作用&#xff…...

Android Studio新手实战——深入学习Activity组件

目录 前言 一、Activity简介 二、任务栈相关概念 三、常用Flag 四、结束当前Activity 五、Intent跳转Activity 六、更多资源 前言 Android是目前全球最流行的移动操作系统之一&#xff0c;而Activity作为Android应用程序的四大组件之一&#xff0c;是Android应用程序的核…...

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion Cauchy’s Argument Priciple 柯西幅角原理 结论&#xff1a; s s s平面内顺时针画一条闭合曲线 A A A&#xff0c; B B B曲…...

企业培训系统开发:构建灵活高效的学习平台

企业培训系统的开发在当今数字化时代是至关重要的。本文将介绍一些关键技术和代码示例&#xff0c;以帮助您构建一个灵活、高效的企业培训系统。 1. 技术选型 在开始企业培训系统的开发之前&#xff0c;首先需要选择合适的技术栈。以下是一个基本的技术选型示例&#xff1a;…...

2023秋电子科大信软 程算I 机考真题

基本情况 对应课程&#xff1a;程序设计与算法基础I 考试时间&#xff1a;2小时 题型&#xff1a;函数题编程题 函数题只需要完成期中一些&#xff08;个&#xff09;函数即可 编程题需要自己手动写main函数 提示&#xff1a;本次考试为全年级机考&#xff0c;分上下午场&am…...

Hive用户自定义函数之UDF开发

在进行大数据分析或者开发的时候&#xff0c;难免用到Hive进行数据查询分析&#xff0c;Hive内置很多函数&#xff0c;但是会有一部分需求需要自己开发&#xff0c;这个时候就需要自定义函数了&#xff0c;Hive的自定义函数开发非常方便&#xff0c;今天首先讲一下UDF的入门开发…...

Unity中URP下的线性雾

文章目录 前言一、线性雾 雾效因子二、MixFog1、ComputeFogIntensity 雾效强度计算2、雾效颜色混合 lerp(fogColor, fragColor, fogIntensity); 前言 在之前的文章中&#xff0c;我们实现了URP下的雾效支持。 Unity中URP下的添加雾效支持 在上一篇文章中,我们解析了 URP 下统…...

SpringBoot全局Controller返回值格式统一处理

一、Controller返回值格式统一 1、WebResult类 在 Controller对外提供服务的时候&#xff0c;我们都需要统一返回值格式。一般定义一个 WebResult类。 统一返回值&#xff08;WebResult类&#xff09;格式如下&#xff1a; {"success": true,"code": 2…...

怎样给公司产品做网站/百度一下 官方网

Java运算符 优先级 运算符的优先级决定了存在多个运算符时一个表达式各部分的运算顺序。Java 对运算顺序作出了特别的规定。其中&#xff0c;最简单的规则就是乘法和除法在加法和减法之前完成。程序员经常都会忘记其他优先级规则&#xff0c;所以应该用括号明确规定运算顺序。…...

课程网站开发过程/推广文章

Select Form List By Index关键字——模拟通过下拉列表的Index来 选中 指定的下拉列表的选项&#xff1b; 该关键字接收[ locator | *indexes ]多个参数&#xff0c;locator可以通过id、name等来进行元素定位&#xff1b; indexes可以允许传入多个&#xff1b; Select …...

没网站怎么做二维码扫描连接/盛大游戏优化大师

在数据分析领域&#xff0c;最热门的莫过于Python和R语言&#xff0c;此前有一篇文章《别老扯什么Hadoop了&#xff0c;你的数据根本不够大》指出&#xff1a;只有在超过5TB数据量的规模下&#xff0c;Hadoop才是一个合理的技术选择。这次拿到近亿条日志数据&#xff0c;千万级…...

区块链的网站怎么做/如何做网站营销

>> ∝-成正比符号&#xff0c;a∝b表示b与a成正比。 >> sinh与变量x一起表示双曲正弦&#xff0c;cosh与变量x一起表示双曲余弦。双曲正弦与双曲余弦总称双曲函数&#xff0c;单词hyperbolic称为双曲的。 >> ∀表示任意&#xff0c;any的首字母大写倒立&am…...

wordpress 简单主题/视频剪辑培训班

更换gcc编译器可以解决 -D CMAKE_C_COMPILER/usr/bin/gcc-4.8转载于:https://www.cnblogs.com/gabrialrx/p/9001554.html...

wordpress js丢失/郑州seo关键词优化公司

多文档界面 多文档界面是一个针对文档处理应用程序的一套规范。 MDI程序构成&#xff1a; 标题栏&#xff0c;菜单&#xff0c;边框。 客户区&#xff0c;在MDI中又称工作区&#xff0c;其中可有多个子窗口&#xff08;文档窗口&#xff09;。 MDI程序特点&#xff1a; 1…...