react的jsx文件可以写两个useEffect

113 阅读1分钟

在React组件中,你可以使用useEffect Hook 两次。useEffect 用于处理副作用,比如数据获取、订阅或者手动更改DOM。

每次组件渲染完成后,你可以使用多个useEffect调用来执行不同的副作用处理。这是因为useEffect可以在组件渲染后执行各种操作,并且它们可以根据需要进行多次调用。

以下是一个简单的例子,展示了如何在React函数组件中使用两个useEffect

import React, { useState, useEffect } from 'react';
 
function MyComponent() {
  const [count, setCount] = useState(0);
 
  // 第一个useEffect,用于监听count变化
  useEffect(() => {
    console.log(`Count changed to ${count}`);
  }, [count]);
 
  // 第二个useEffect,用于组件挂载后执行的操作
  useEffect(() => {
    console.log('Component has mounted');
    return () => {
      console.log('Component is unmounting');
    };
  }, []); // 空数组[]意味着仅在组件挂载时执行一次
 
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}
 
export default MyComponent;

在这个例子中,有两个useEffect

  1. 第一个useEffect监听count变量的变化,并在每次count更新时在控制台输出新的值。它的第二个参数[count]是依赖项数组,表示其依赖count变量。
  2. 第二个useEffect在组件挂载后执行,并在组件卸载前执行清理操作。它的第二个参数为空数组[],意味着它只在组件挂载时执行一次。

每个useEffect都有不同的用途,并且可以根据需要多次使用。