React-自定义Hook与逻辑共享

ops/2024/11/24 4:20:41/

#题引:我认为跟着官方文档学习不会走歪路

在 React 中,自定义 Hook 是一种复用逻辑的方式。自定义 Hook 是一个 JavaScript 函数,名称以 use 开头,可以调用其他的 Hook, 可以返回任意值。

创建自定义Hook

假设你正在开发一款重度依赖网络的应用(和大多数应用一样)。当用户使用应用时网络意外断开,你需要提醒他, 该网络状态验证需要在多个组件中使用。

需要两个东西:
一个追踪网络是否在线的 state。
一个订阅全局 online 和 offline 事件并更新上述 state 的 Effect。

function useOnlineStatus() {const [isOnline, setIsOnline] = useState(true);useEffect(() => {function handleOnline() {setIsOnline(true);}function handleOffline() {setIsOnline(false);}window.addEventListener('online', handleOnline);window.addEventListener('offline', handleOffline);return () => {window.removeEventListener('online', handleOnline);window.removeEventListener('offline', handleOffline);};}, []);return isOnline;
}

组件内部可以这样使用该Hook

const isOnline = useOnlineStatus();

自定义 Hook 共享的是状态逻辑,而不是状态本身,如果有多个组件使用了useOnlineStatus, state 变量 isOnline是各自独立的。每当组件重新渲染,自定义 Hook 中的代码就会重新运行。

如果一个自定义 Hook 不使用任何内置 Hook(如 useState、useEffect 等),那么它实际上就变成了一个普通的工具函数。这种情况比较少见,因为自定义 Hook 的价值在于它们能够利用 React 的状态管理和生命周期功能。


http://www.ppmy.cn/ops/136231.html

相关文章

MATLAB 2024a安装包下载及安装教程

[安装环境]: Win 11/Win 10 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学…

MySQL深度剖析-全局锁、表锁、行锁

一、锁的基本概念 事务与锁是不同的。事务具有ACID( 原子性、一致性、隔离性和持久性),锁是用于解决隔离性的一种机制。事务的隔离级别通过锁的机制来实现。 锁机制是为了解决数据库的并发控制问题而产生的。如在同一时刻,客户端对同一个表做更新或查询…

elasticsearch介绍和部署

1 elasticsearch介绍 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。可以很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsea…

Dubbo HTTP接入之triple协议

在 triple协议规范 中我们曾详细介绍了 triple 对于浏览器、网关的友好性设计,其中非常重要的一点是 triple 同时支持跑在 HTTP/1、HTTP/2 上: 在后端服务之间使用高效的 triple 二进制协议。对于前端接入层,则支持所有标准 HTTP 工具如 cUR…

unity3d——基础篇2刷(三角函数练习题)

1. 移动速度和变化速度 面朝向移动速度 (moveSpeed): 控制对象沿其当前朝向(通常是摄像机方向)的移动速度。左右曲线移动变化的速度 (changeSpeed): 控制对象左右移动速度的变化频率。 2. 移动距离控制 左右曲线移动距离控制 (changeSize): 控制对象左…

『 Linux 』网络层 - IP协议(一)

文章目录 IP协议报文格式IP协议报文如何进行报头与有效载荷分离 网段划分CIDR特殊的IP地址 IP地址的数量限制私有IP和公网IP理解运营商 IP协议报文格式 IP协议报文格式与TCP协议的报文格式类似; IP报文的宽度也是32位; 对应的IP的实际报头为20字节为定长报头(固定长度); 版本 …

hive的存储格式

1) 四种存储格式 hive的存储格式分为两大类:一类纯文本文件,一类是二进制文件存储。 Hive支持的存储数据的格式主要有:TEXTFILE、SEQUENCEFILE、ORC、PARQUET 第一类:纯文本文件存储 textfile: 纯文本文件存储格式…

前端预览pdf文件流

需求 后端接口返回pdf文件流,实现新窗口预览pdf。 解决方案 把后端返回的pdf文件流转为blob路径,利用浏览器直接预览。 具体实现步骤 1、引入axios import axios from axios;2、创建预览方法(具体使用时将axios的请求路径替换为你的后端…