react hooks的useEffect:

React 的 useEffect Hook 用于在函数组件中执行副作用操作(例如数据获取、订阅事件等),它类似于类组件中的生命周期方法 componentDidMountcomponentDidUpdatecomponentWillUnmount 的组合。

useEffect 接收一个回调函数和一个可选的依赖数组。

复制代码
import { useEffect } from 'react';

useEffect(() => {
  // 在这里执行副作用操作

  // 返回一个清除函数(可选)
  return () => {
    // 在组件销毁之前执行清除操作
  };
}, [依赖数组]);

回调函数作为参数传递给 useEffect,它将在组件渲染后执行,每次组件更新时也会重新执行。

依赖数组是一个可选的参数,在数组中指定的依赖发生变化时, useEffect 将重新执行回调函数。如果省略了依赖数组,则每次组件更新时都会重新执行回调函数。

在回调函数中,我们可以进行各种副作用操作,比如订阅事件、发送网络请求、操作 DOM 等。

返回的清除函数(可选)将在组件销毁之前执行,用于清理副作用操作,比如取消订阅、清除定时器等。

以下是几个使用 useEffect 的示例:

  1. 基本用法:在组件渲染后执行副作用操作。

    import { useEffect } from 'react';

    function MyComponent() {
    useEffect(() => {
    console.log('Component rendered');

    复制代码
     return () => {
       console.log('Component cleanup');
     };

    }, []);

    return null;
    }

  2. 使用依赖项:在依赖项发生变化时执行副作用操作。

    import { useEffect, useState } from 'react';

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

    useEffect(() => {
    console.log(Count changed: ${count});

    复制代码
     return () => {
       console.log('Component cleanup');
     };

    }, [count]);

    return (


    <button onClick={() => setCount(count + 1)}>Increment</button>

    );
    }

  3. 清理副作用操作:在组件销毁前执行清除操作。

    import { useEffect } from 'react';

    function MyComponent() {
    useEffect(() => {
    const subscription = subscribeToEvents();

    复制代码
     return () => {
       unsubscribeFromEvents(subscription);
     };

    }, []);

    return null;
    }

在这个例子中,我们订阅了一些事件,返回的清除函数会在组件销毁前取消订阅。

通过使用 useEffect Hook,我们可以将副作用操作集成到函数组件中,并根据需要进行清理操作,使组件更加灵活和可维护。

相关推荐
知识分享小能手1 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one1 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
魔云连洲1 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell1 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
weixin_437830943 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
超级无敌攻城狮3 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
excel4 小时前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端
gnip4 小时前
JavaScript事件流
前端·javascript
小菜全4 小时前
基于若依框架Vue+TS导出PDF文件的方法
javascript·vue.js·前端框架·json
赵得C4 小时前
【前端技巧】Element Table 列标题如何优雅添加 Tooltip 提示?
前端·elementui·vue·table组件