惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
J
Java Code Geeks
Vercel News
Vercel News
A
About on SuperTechFans
G
Google Developers Blog
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
博客园 - 司徒正美
S
SegmentFault 最新的问题
D
DataBreaches.Net
博客园_首页
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
量子位
雷峰网
雷峰网
IT之家
IT之家
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
H
Help Net Security
宝玉的分享
宝玉的分享
博客园 - 叶小钗

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? PrimaryOralMathPack 小学生口算题生成器 AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目
react useEffect()中使用lodash库中的防抖debounce
J.sky · 2023-07-12 · via 碎言

今天在react useEffect()中有一个function需要防抖,于是乎就install了lodash库,但是直接在useEffect()中使用却没有效果,经过一番查找,最终解决了这个问题。

问题现场

安装引入:

import { useState, useEffect } from "react";
import _ from "lodash";
useEffect(() => {
    _.debounce(mx, 500); //防抖
}, [mc]);

mx是一个函数,但是防抖后不但没有效果,mx这个函数也无法正常执行了,这跟useEffect运行机制有一定关系。 后来经过修改,mx函数是可以执行了,但是mc这个state中的数值又无法同步了。

解决问题

修改代码如下:

useEffect(() => {
    const debounceMX = _.debounce(() => {
    mx();
    console.log(mc);
    }, 500);

    debounceMX();

    return () => {
    debounceMX.cancel();
    };
}, [mc]);

在这个修改后的代码中,debounceMX函数被定义在useEffect的内部,并且mc作为useEffect的依赖项。当mc发生变化时,useEffect将会重新执行,导致debounceMX函数的重新创建和调用。通过将debounceMX.cancel()作为useEffect返回的清理函数,可以确保在组件卸载时取消防抖函数的执行,以避免潜在的问题或错误。

经过多次的修改,最终上边的代码完美的解决了不能防抖以及数据不能同步的问题。