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

React:什么是Hook?通俗易懂的讲讲

什么是Hook

  • 1.Hook 是什么?
  • 2.React 内置的 Hook
  • 3. 自定义 Hook
  • 4. 总结

1.Hook 是什么?

可以理解为:函数组件的工具/功能插件
Hook是 React 16.8 以后提供的一种新特性,
让你在函数组件里“钩入”React 的功能(比如状态管理、生命周期等)
不用再写 class 组件了。

2.React 内置的 Hook

React 提供了一些内置的 Hook,最常用的有:

  • useState:给函数组件加上“状态”功能(比如计数器里的数字)。

  • useEffect:用来写副作用,比如请求数据、订阅事件、手动操作 DOM 等。

  • useRef:创建一个可以保存数据的“盒子”,组件刷新时内容不会丢失。

  • useContext 就像一个“共享插件”,它可以让你的组件轻松地访问其他组件共享的数据。在组件树中方便地传递数据。

例子:计数器

import React, { useState } from 'react';function Counter() {const [count, setCount] = useState(0); // 用 useState 声明状态return (<div><p>当前值:{count}</p><button onClick={() => setCount(count + 1)}>加一</button></div>);
}

3. 自定义 Hook

自定义 Hook其实就是自己写的函数工具
这个函数里可以用别的 hook,
用来复用一套逻辑

命名习惯: 必须以use开头,比如 useFetchDatauseMousePosition

例子:自定义获取窗口宽度的 Hook

import { useState, useEffect } from 'react';function useWindowWidth() {const [width, setWidth] = useState(window.innerWidth);useEffect(() => {const onResize = () => setWidth(window.innerWidth);window.addEventListener('resize', onResize);return () => window.removeEventListener('resize', onResize);}, []);return width;
}// 用法
function Demo() {const width = useWindowWidth();return <div>窗口宽度:{width}</div>;
}

4. 总结

  • Hook 就是让你在函数组件里“钩入”React功能的函数。
  • 内置 Hook 是 React 官方提供的(如 useState、useEffect)。
  • 自定义 Hook 是你自己写的、用来复用逻辑的小函数(必须以 use 开头)。

一句话
Hook = 让函数组件变得更有能力的小工具函数(插件),可以用来管理状态、生命周期、逻辑复用等。

相关文章:

  • MuJoCo 机械臂 PPO 强化学习逆向运动学(IK)
  • 分页查询优惠券
  • 逐步了解蓝牙 LE 配对(物联网网络安全)
  • Missashe考研日记-day26
  • istio使用ingress gateway通过header实现对不同服务的路由
  • Vue3 中 computed的详细用法
  • 达梦DMDSC初研
  • 【C语言】数据在内存中的存储:从整数到浮点数的奥秘
  • 1️⃣6️⃣three.js_光源
  • 大语言模型时代,单细胞注释也需要集思广益(mLLMCelltype)
  • 数字人接大模型第一步:表情同步
  • STM32 串口USART
  • 【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(2)
  • Concepts (C++20)
  • 如何在 Postman 中,自动获取 Token 并将其赋值到环境变量
  • 每日c/c++题 备战蓝桥杯 ([洛谷 P1226] 快速幂求模题解)
  • Java 富文本转word
  • java方法引用
  • static成员
  • jQuery的removeClass(),一次删除多个class
  • 对排出黑烟车辆出具合格报告,广州南沙一检测公司被罚十万元
  • 五一假期上海路网哪里易拥堵?怎么错峰更靠谱?研判报告来了
  • 波音CEO称中方因中美“贸易战”停止接收波音飞机,外交部回应
  • 过敏性鼻炎,不只是“打喷嚏”那么简单
  • 最高法典型案例:学生在校受伤,学校并非必然担责
  • 特朗普称或将“大幅降低”对华关税,外交部:打,奉陪到底;谈,大门敞开