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

什么是Hook

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

1.Hook 是什么?

可以理解为:函数组件的工具/功能插件

Hook是 React 16.8 以后提供的一种新特性,
让你在函数组件里"钩入"React 的功能(比如状态管理、生命周期等)

不用再写 class 组件了。

2.React 内置的 Hook

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

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

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

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

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

例子:计数器

ts 复制代码
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

ts 复制代码
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 = 让函数组件变得更有能力的小工具函数(插件),可以用来管理状态、生命周期、逻辑复用等。

相关推荐
韩曙亮1 分钟前
【Web APIs】鼠标经过、离开事件 ( mouseover、mouseout 事件 | mouseenter、mouseleave 事件 )
前端·javascript·web apis·mouseover·mouseout·mouseenter·mouseleave
brzhang2 分钟前
MCP A2A Skills 这三个词搞懂了 再去写你的智能体
前端·后端·架构
灰灰勇闯IT3 分钟前
RN原生模块交互:打通JS与原生的桥梁
开发语言·javascript·交互
LYFlied5 分钟前
浅谈跨端开发:大前端时代的融合之道
前端·flutter·react native·webview·大前端·跨端开发·hybrid
LYFlied5 分钟前
浅谈前端构建工具核心理解&&主流工具对比
前端·webpack·软件构建·rollup·vite·开发工具·工程化
weixin_3077791319 分钟前
Jenkins jQuery3 API 插件详解:赋能插件前端开发的利器
运维·开发语言·前端·jenkins·jquery
LinDon_28 分钟前
【企业微信快速登录适配 Chrome/Edge 142+】
前端·chrome·企业微信
JosieBook35 分钟前
【Vue】google chrome中安装vue_dev_tools.crx的时候提示“无法安装扩展程序,因为它使用了不受支持的清单版本。”
前端·vue.js·chrome
前端不太难37 分钟前
RN 性能优化:列表滚动掉帧、卡顿怎么办?
前端·react native·性能优化
亿元程序员38 分钟前
祖传项目二开快上线了,却还有很多旧的资源,怎么办?
前端