返回

Hooks 之 useEffect

前端

写代码,离不开效果。
好的效果,离不开好的副作用。

在 React 中,想要达成一个好的副作用,离不开 useEffect

一、useEffect

useEffect 是一个 React Hook,它允许我们在函数组件中执行副作用操作。
副作用操作是指那些会影响组件状态或对 DOM 进行更改的操作。

useEffect 函数接受两个参数:一个回调函数和一个依赖项数组。
回调函数将在组件挂载后立即执行,并在每次组件更新后重新执行。
依赖项数组是一个数组,其中包含了那些在组件更新时需要重新执行回调函数的变量。

如果我们不提供依赖项数组,那么回调函数将在每次组件更新后重新执行。
这可能导致不必要的重新渲染,从而降低性能。

二、使用场景

useEffect 可以用来实现各种各样的效果,比如:

  1. 数据获取:可以使用 useEffect 来在组件挂载后立即获取数据。
  2. 事件监听:可以使用 useEffect 来在组件挂载后添加事件监听器,并在组件卸载后移除事件监听器。
  3. 定时器:可以使用 useEffect 来创建定时器,并在组件卸载后清除定时器。
  4. 动画:可以使用 useEffect 来创建动画,并在组件卸载后停止动画。

三、代码示例

import React, { useEffect } from "react";

const MyComponent = () => {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch("https://example.com/api/data")
      .then((res) => res.json())
      .then((data) => setData(data));
  }, []);

  return <div>{data ? data.message : "Loading..."}</div>;
};

export default MyComponent;

在这个例子中,我们使用 useEffect 来在组件挂载后立即获取数据。
我们使用 useState 来保存数据,并在数据获取成功后更新状态。

四、总结

useEffect 是一个非常强大的 Hook,它可以用来实现各种各样的效果。
在使用 useEffect 时,需要特别注意依赖项数组的设置,以避免不必要的重新渲染。

五、参考资料

  1. 官方文档 https://reactjs.org/docs/hooks-effect.html
  2. useEffect 完整指南 https://overreacted.io/a-complete-guide-to-useeffect/