2025-10-10 React中常用的hook

一、useState(状态管理)

1.用途
在函数组件中声明状态变量,并能更新状态触发组件重新渲染。

2.示例

import React, { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0); // 初始值 0

  const increment = () => setCount(count + 1);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>+1</button>
    </div>
  );
}

二、useEffect

1.用途
用来在函数组件中处理副作用(side effects)。副作用可以是数据获取、订阅事件、手动操作 DOM、定时器、日志等。它相当于类组件里的 componentDidMount、componentDidUpdate 和 componentWillUnmount 的组合。
2.示例

import React, { useState, useEffect } from "react";

function MyComponent() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    // 这里是副作用逻辑
    console.log("组件渲染或 count 更新了:", count);

    // 可选的清理函数
    return () => {
      console.log("清理上一次的副作用");
    };
  }, [count]); // 依赖数组
  

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
}

3.依赖项说明
3.1 不传
每次渲染都会执行
3.1 [] 空数组
仅在组件挂载和卸载时执行一次
3.3[a, b]
仅在 a 或 b 改变时执行

三、useCallback

1.用途
用来记住函数的引用,避免在每次组件渲染时都创建新的函数对象。

2.示例

const memoizedCallback = useCallback(() => {
  // 这里写要执行的逻辑
}, [依赖项]);

四、useContext

1.用途
获取全局的上下文。
2.示例

import React, { createContext, useContext } from "react";

const ThemeContext = createContext("light");

function Button() {
  const theme = useContext(ThemeContext); // 获取 context 值
  return <button style={{ background: theme === "dark" ? "#333" : "#eee" }}>Click</button>;
}

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Button />
    </ThemeContext.Provider>
  );
}

五、useRef

1.用途
1.1 获取 DOM 节点引用
1.2 保存可变值(不会触发重新渲染)

2.示例

function Timer() {
  const countRef = useRef(0);

  const increment = () => {
    countRef.current += 1;
    console.log(countRef.current);
  };

  return <button onClick={increment}>Click</button>;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容