Skip to content

useEffect

什么是 useEffect

useEffect 是一个 React Hook,用于在函数组件中执行副作用(数据获取、订阅、DOM操作)。

基本语法

tsx
useEffect(() => {
  // 副作用逻辑
  return () => {
    // 清理函数
  };
}, [dependencies]);

注意

  • 在严格模式开发中,useEffect有一个额外的执行周期(副作用函数+清理函数),用于发现潜在问题。
  • 如果依赖项是组件内部的对象或函数,每次渲染都会创建新的对象或函数,导致依赖项变化,进而导致副作用函数重复执行,可以使用useMemouseCallback解决。

依赖项

依赖项规则副作用执行规则
不传递依赖项在每次渲染后都会执行。
若传递空数组只在组件挂载和卸载时执行。
若传递依赖项只在依赖项变化时执行。

处理异步操作

tsx
useEffect(() => {
  const fetchData = async () => {
    await fetch('https://api.example.com/data');
  };
  fetchData();
}, []);
tsx
useEffect(() => {
  (async () => {
    await fetch('https://api.example.com/data');
  })();
}, []);

生命周期