react useEffect函数清除副作用函数执行时机

useEffect

  1. 参数
    • 第一个参数setup :处理 Effect 的函数。setup 函数选择性返回一个清理(cleanup )函数。
      • 当组件被添加到 DOM 的时候,React 将运行 setup 函数。
      • 在每次依赖项变更重新渲染后,React 将首先使用旧值运行 cleanup 函数(如果你提供了该函数),然后使用新值运行 setup 函数。
      • 在组件从 DOM 中移除后,React 将最后一次运行 cleanup 函数。
    • 第二个参数可选 dependencies :setup 代码中引用的所有响应式值的列表。
      • 响应式值包括 props、state 以及所有直接在组件内部声明的变量和函数。
      • 如果你的代码检查工具 配置了 React,那么它将验证是否每个响应式值都被正确地指定为一个依赖项。依赖项列表的元素数量必须是固定的,并且必须像 [dep1, dep2, dep3] 这样内联编写。
      • React 将使用 Object.is 来比较每个依赖项和它先前的值。如果省略此参数,则在每次重新渲染组件之后,将重新运行 Effect 函数。
  2. 执行时机
    • React 在必要时会调用 setup 和 cleanup ,这可能会发生多次:
      • 挂载阶段:将组件挂载到页面时,将运行 setup 代码。
      • 更新阶段 :若 useEffect 提供了依赖项数组,当依赖项数组中的任何一个值发生变化时,useEffect 会先调用之前的清理函数(如果有的话),然后再调用新的副作用函数:
        • 首先,使用旧的 props 和 state 运行 cleanup 代码。
        • 然后,使用新的 props 和 state 运行 setup 代码。
      • 卸载阶段:当组件从页面卸载后,cleanup 代码 将运行最后一次。
  3. 注意事项
    • useEffect 是一个 Hook,因此只能在 组件的顶层 或自己的 Hook 中调用它,而不能在循环或者条件内部调用。如果需要,抽离出一个新组件并将 state 移入其中

示例

js 复制代码
import React, { useEffect, useState } from 'react';

const Example = () => {
    const [count, setCount] = useState(0);

    useEffect(() => {
        console.log('副作用函数执行,当前 count 值为:', count);

        return () => {
            console.log('清理函数执行,上一次 count 值为:', count);
        };
    }, [count]);

    return (
        <div>
            <p>Count: {count}</p>
            <button onClick={() => setCount(count + 1)}>Increment</button>
        </div>
    );
};

export default Example;    
相关推荐
2501_920931703 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得05 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
摘星编程5 小时前
React Native鸿蒙版:Drawer抽屉导航实现
react native·react.js·harmonyos
东东5165 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino5 小时前
图片、文件的预览
前端·javascript
2501_920931707 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05287 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔7 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李7 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN7 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化