useeffect 回调函数
    useEffect是ReactHooks中提供的一个副作用Hook,用于在函数组件中处理类组件中生命周期函数的相关逻辑。useEffect 接收一个回调函数作为参数,这个回调函数在组件渲染完成后执行。
    useEffect 的回调函数可以在组件挂载、更新和卸载时执行不同的操作。下面分别介绍这三种情况下 useEffect 回调函数的执行。
    1. 组件挂载时执行
    在组件挂载时,useEffect 的回调函数会在组件渲染完成后立即执行一次。这个回调函数可以用来进行一些初始化操作,比如设置一些默认值、获取数据等。
    示例代码:
    ```
    function App() {
    const [count, setCount] = useState(0);
    useEffect(() => {
    console.log('组件挂载');
    }, []);
    return (
    <div>
    <p>count: {count}</p>
    <button onClick={() => setCount(count + 1)}>增加</button>
    </div>
    );
    }
    ```
    在这个例子中,我们在 useEffect 的回调函数中打印了一条日志,用来表示组件挂载时执行。
    2. 组件更新时执行
    当组件的 props 或 state 发生变化时,组件会重新渲染。如果你希望在组件更新时执行一些操作,可以在 useEffect 的回调函数中添加相应的逻辑。
    示例代码:
    ```
    function App() {
    const [count, setCount] = useState(0);
    useEffect(() => {
reacthooks理解
    console.log('组件更新');
    }, [count]);
    return (
    <div>
    <p>count: {count}</p>
    <button onClick={() => setCount(count + 1)}>增加</button>
    </div>
    );
    }
    ```
    在这个例子中,我们在 useEffect 的第二个参数中传入了 count,表示只有 count 发生变化时才会执行回调函数。这样就可以避免在不必要的情况下执行回调函数。
    3. 组件卸载时执行
    当组件从 DOM 中卸载时,useEffect 的回调函数可以用来清除一些副作用,比如清除定时器、取消订阅等。
    示例代码:
    ```
    function App() {
    const [count, setCount] = useState(0);
    useEffect(() => {
    console.log('组件挂载');
    const timer = setInterval(() => {
    console.log('tick');
    }, 1000);
    return () => {
    console.log('组件卸载');
    clearInterval(timer);
    };
    }, []);
    return (
    <div>
    <p>count: {count}</p>
    <button onClick={() => setCount(count + 1)}>增加</button>
    </div>
    );
    }
    ```
    在这个例子中,我们在 useEffect 的回调函数中设置了一个定时器,并在返回的函数中清除了这个定时器。这样可以确保在组件卸载时定时器被清除,避免内存泄漏。
    总结
    useEffect 是 React Hooks 中非常常用的一个 Hook,可以用来处理组件的副作用。它的回调函数可以在组件挂载、更新和卸载时执行不同的操作。在使用 useEffect 时,需要注意回调函数的第二个参数,可以避免不必要的执行。同时,还需要注意在返回的函数中清除一些副作用,避免内存泄漏。