最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react事件回調(diào)中使用防抖失敗的常見(jiàn)錯(cuò)誤和正確使用方式

 更新時(shí)間:2025年06月06日 09:24:02   作者:學(xué)習(xí)兩年半的前端練習(xí)生  
這篇文章主要介紹了react事件回調(diào)中使用防抖失敗的常見(jiàn)錯(cuò)誤和正確使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用時(shí)常見(jiàn)的錯(cuò)誤和原因

問(wèn)題:直接把debounce(防抖函數(shù))當(dāng)回調(diào)函數(shù)用(體現(xiàn)在debounce內(nèi)執(zhí)行函數(shù),而不是函數(shù)本身)

報(bào)錯(cuò)代碼:func is not a function TypeError: func is not a function at eval (http://localhost:3005/static/js/bundle.js:306181:32)。

原因:debounce的基本用法是

傳入一個(gè)“函數(shù)”和等待時(shí)間,返回一個(gè)新的“防抖后函數(shù)”。你應(yīng)該調(diào)用返回的這個(gè)新函數(shù),而不是在debounce內(nèi)直接執(zhí)行原函數(shù)。

onChange={(debounce(changeDepartmentId("123"), 300))}

問(wèn)題:直接把debounce(防抖函數(shù))套在回調(diào)函數(shù)外面,但是debounce內(nèi)的回調(diào)函數(shù)卻沒(méi)有執(zhí)行任何內(nèi)容。

錯(cuò)誤代碼和原因:對(duì)react中事件回調(diào)了解不夠,導(dǎo)致防抖函數(shù)沒(méi)有執(zhí)行。

//這種的回調(diào)是把 debounce 函數(shù)作為屬性傳給子組件,而父中定義的changeDepartmentId只是單純的函數(shù)
onChange={debounce(changeDepartmentId, 300)}

// 這種的回調(diào)是把 changeDepartmentId 函數(shù)作為屬性傳遞給子組件,當(dāng)onChange事件觸發(fā),子組件內(nèi)調(diào)用 changeDepartmentId 函數(shù)
onChange={changeDepartmentId}

// 這種寫法是直接在onChange事件中調(diào)用 changeDepartmentId 函數(shù)
onChange={(value)=>changeDepartmentId(value)}

問(wèn)題:正確使用了防抖但是沒(méi)有起到防抖效果,常見(jiàn)原因和錯(cuò)誤代碼:

這樣每次調(diào)用 changeDepartmentId,都會(huì)重新創(chuàng)建一個(gè)新的 debounce 實(shí)例,而不是復(fù)用同一個(gè)防抖函數(shù)。

這樣的話,防抖的定時(shí)器每次都是新的,根本起不到“上一次未到時(shí)間就清除本次”的效果,所以沒(méi)有防抖。

changeDepartmentId={(value) => {
        debounce(setState(prev => ({ ...prev,id:value})), 300)
}}

正確用法下的解決方案

在組件外部或 useCallback/useMemo 里只創(chuàng)建防抖函數(shù),然后復(fù)用它。 (防止防抖函數(shù)重復(fù)創(chuàng)建)

 //部門編號(hào)搜索聯(lián)想,useCallback防止函數(shù)重新創(chuàng)建實(shí)例
 const changeDepartmentId = useCallback(
        //正確防抖
        debounce((value: string) => {
            //設(shè)置搜索值
            setState(prev => ({ ...prev, searchData: { ...prev.searchData, departmentIdentifier: value } }))
        }, 300),
        []
    );


//使用回調(diào)
changeDepartmentId={changeDepartmentId}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redux?Toolkit的基本使用示例詳解(Redux工具包)

    Redux?Toolkit的基本使用示例詳解(Redux工具包)

    這篇文章主要介紹了Redux?Toolkit的基本使用,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 深入理解React中Suspense與lazy的原理

    深入理解React中Suspense與lazy的原理

    在react中為我們提供了一個(gè)非常有用的組件,那就是Suspense,本文主要介紹了如何使用Suspense?和?react提供的lazy結(jié)合起來(lái)達(dá)到異步加載狀態(tài)的目的,感興趣的可以了解下
    2024-04-04
  • React源碼state計(jì)算流程和優(yōu)先級(jí)實(shí)例解析

    React源碼state計(jì)算流程和優(yōu)先級(jí)實(shí)例解析

    這篇文章主要為大家介紹了React源碼state計(jì)算流程和優(yōu)先級(jí)實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React中useEffect依賴數(shù)組的常見(jiàn)陷阱

    React中useEffect依賴數(shù)組的常見(jiàn)陷阱

    本文主要介紹了React中useEffect依賴數(shù)組的常見(jiàn)陷阱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • IntersectionObserver實(shí)現(xiàn)加載更多組件demo

    IntersectionObserver實(shí)現(xiàn)加載更多組件demo

    這篇文章主要為大家介紹了IntersectionObserver實(shí)現(xiàn)加載更多組件demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • React服務(wù)端渲染(SSR)的實(shí)現(xiàn)方式和最佳實(shí)踐

    React服務(wù)端渲染(SSR)的實(shí)現(xiàn)方式和最佳實(shí)踐

    服務(wù)端渲染(SSR)是現(xiàn)代React應(yīng)用開(kāi)發(fā)中的重要技術(shù),它能顯著提升應(yīng)用的性能、SEO和用戶體驗(yàn),本文將深入探討React SSR的原理、實(shí)現(xiàn)方式和最佳實(shí)踐,需要的朋友可以參考下
    2025-09-09
  • React實(shí)現(xiàn)雙向綁定示例代碼

    React實(shí)現(xiàn)雙向綁定示例代碼

    這篇文章給大家介紹了在React中如何實(shí)現(xiàn)雙向綁定,文中給出了示例代碼,對(duì)大家的理解與學(xué)習(xí)很有幫助,有需要的朋友下面來(lái)一起看看吧。
    2016-09-09
  • React?props的使用小結(jié)

    React?props的使用小結(jié)

    本文主要介紹了React?props的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • React?Native采用Hermes熱更新打包方案詳解

    React?Native采用Hermes熱更新打包方案詳解

    這篇文章主要介紹了React?Native采用Hermes熱更新打包實(shí)戰(zhàn),在傳統(tǒng)的熱更新方案中,我們實(shí)現(xiàn)熱更新需要借助code-push開(kāi)源方案,包括熱更新包的發(fā)布兩種方式詳解,感興趣的朋友一起看看吧
    2022-05-05
  • React 條件渲染最佳實(shí)踐小結(jié)(7種)

    React 條件渲染最佳實(shí)踐小結(jié)(7種)

    這篇文章主要介紹了React 條件渲染最佳實(shí)踐小結(jié)(7種),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

明光市| 舟山市| 天峨县| 资源县| 连州市| 平利县| 修武县| 苏尼特左旗| 鲁甸县| 泊头市| 宁海县| 普宁市| 噶尔县| 克什克腾旗| 麻城市| 紫金县| 衡南县| 邵阳县| 鱼台县| 凤山市| 靖州| 澜沧| 乐亭县| 竹北市| 鄂温| 攀枝花市| 麻阳| 合阳县| 尼玛县| 资源县| 淮阳县| 郴州市| 苍南县| 阜康市| 元朗区| 汽车| 中卫市| 海口市| 天长市| 固原市| 郸城县|