当前位置: 首页 > 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 的主要作用是在函数组件中存储可变值,而且不会引起组件重新渲染。

http://www.lryc.cn/news/273267.html

相关文章:

  • 提供电商Api接口-100种接口,淘宝,1688,抖音商品详情数据安全,稳定,支持高并发
  • git的使用 笔记1
  • 基于SpringBoot的医疗挂号管理系统
  • prometheus与zabbix监控的对比介绍
  • 详解全志R128 RTOS安全方案功能
  • 【MySQL】WITH AS 用法以及 ROW_NUMBER 函数 和 自增ID 的巧用
  • 基于SpringBoot的在线考试系统源码和论文
  • 基于Spring Boot的美妆分享系统:打造个性化推荐、互动社区与智能决策
  • Axure医疗-住院板块,住院患者原型预览,新增医护人员原型预览,新增病房原型预览,选择床位原型预览,主治医生原型预览,主治医生医嘱原型预览
  • 前端实战第一期:悬浮动画
  • Python学习笔记(五)函数、异常处理
  • Vue实现模糊查询
  • 【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析
  • 主板部件
  • 2023年度学习总结
  • 服务器感染了.kann勒索病毒,如何确保数据文件完整恢复?
  • 使用results.csv文件数据绘制mAP对比图
  • 【算法刷题】## 算法题目第1讲:双指针处理数组题目 带视频讲解
  • 达梦数据:数字化时代,国产数据库第一股终于到来?
  • selenium4.0中常见操作方式50条
  • 如何解决使用融云音视频时由于库冲突导致编译不通过的问题
  • ISP 基础知识积累
  • Android Studio新手实战——深入学习Activity组件
  • [足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion
  • 企业培训系统开发:构建灵活高效的学习平台
  • 2023秋电子科大信软 程算I 机考真题
  • Hive用户自定义函数之UDF开发
  • Unity中URP下的线性雾
  • SpringBoot全局Controller返回值格式统一处理
  • 程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash