【React】使用lodash的debounce未生效

react中直接使用lodash的debounce函数,发现并未生效,1秒内多次触发,控制台仍有多次打印,这是因为debounceSearch函数被重新定义了,需要使用useCallback来包装函数。

javascript 复制代码
import { ChangeEvent } from "react"
import { useCallback, useState } from "react"
import { Input } from "antd"
import _ from "lodash"

export default () => {
	const [idValue, setIdValue] = useState<string>("")
	const debounceSearch = _.debounce((value) => {
	    console.log(value)
	  }, 1000)
	)
	const onIptChange = (e: ChangeEvent<HTMLInputElement>) => {
	  debounceSearch(e.target.value)
	}

	return <Input value={idValue} onChange={onIptChange}/>
}

使用useCallback,可以将这个函数缓存起来,避免重复定义。

javascript 复制代码
const debounceSearch = useCallback(
  _.debounce((value) => {
    console.log(value)
  }, 1000),
  []
)
相关推荐
UpgradeLink几秒前
Electron 项目使用官方组件 electron-builder 进行跨架构打包
前端·javascript·electron
蚂蚁不吃土&11 分钟前
cmd powershell svm nodejs npm
前端·npm·node.js
Moment15 分钟前
别再让 JavaScript 抢 CSS 的活儿了,css原生虚拟化来了
前端·javascript·css
CQ_YM18 分钟前
Linux进程终止
linux·服务器·前端·进程
晓得迷路了20 分钟前
栗子前端技术周刊第 110 期 - shadcn/create、Github 更新 npm 令牌政策、Deno 2.6...
前端·javascript·css
nvd1121 分钟前
GKE web 应用实现 Auth0 + GitHub OAuth 2.0登录实施指南
前端·github
前端小端长23 分钟前
项目里满是if-else?用这5招优化if-else让你的代码清爽到飞起
开发语言·前端·javascript
笨小孩78724 分钟前
Flutter跨平台开发全解析:从原理到实战的深度指南
javascript·react native·react.js
胡萝卜3.025 分钟前
现代C++特性深度探索:模板扩展、类增强、STL更新与Lambda表达式
服务器·开发语言·前端·c++·人工智能·lambda·移动构造和移动赋值
AI_567832 分钟前
Vue3组件通信的实战指南
前端·javascript·vue.js