Skip to content

useEffect的第二个参数,是如何判断实现依赖是否发生变化的?

Posted on:2024年8月14日 at 23:27

useEffect 的依赖数组的比较是通过浅比较(shallow comparison)实现的。

具体来说,以下是比较方法的细节:

1. 基础数据类型的比较

对于基本数据类型(如 stringnumberboolean),React 直接比较它们的值:

2. 引用类型的比较

对于引用类型(如对象、数组、函数),React 进行浅比较,即比较引用的内存地址:

浅比较的具体方法

示例代码

import { useState, useEffect } from "react";

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

  useEffect(() => {
    // 副作用函数将在 `count` 或 `data` 变化时重新执行
    console.log("Effect triggered");
  }, [count, data]); // 依赖数组

  return (
    <div>
      <button onClick={() => setCount(count + 1)}>Increment Count</button>
      <button onClick={() => setData([...data, count])}>Add Data</button>
    </div>
  );
}

注意事项

原文转自:https://fe.ecool.fun/topic/1ce33773-0c5d-42c2-a34f-482fd0edae0f