亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

使用時常見的錯誤和原因

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

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

原因:debounce的基本用法是

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

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

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

錯誤代碼和原因:對react中事件回調(diào)了解不夠,導(dǎo)致防抖函數(shù)沒有執(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)}

問題:正確使用了防抖但是沒有起到防抖效果,常見原因和錯誤代碼:

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

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

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

正確用法下的解決方案

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

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


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

總結(jié)

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

相關(guān)文章

  • 一文詳解React如何處理表單的復(fù)雜驗證邏輯

    一文詳解React如何處理表單的復(fù)雜驗證邏輯

    這篇文章主要為大家詳細(xì)介紹了React中如何處理表單的復(fù)雜驗證邏輯,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 在React聊天應(yīng)用中實現(xiàn)圖片上傳功能

    在React聊天應(yīng)用中實現(xiàn)圖片上傳功能

    在現(xiàn)代聊天應(yīng)用中,除了文字和表情,圖片分享也是一個重要的功能,本文將詳細(xì)介紹如何在基于 React 的聊天應(yīng)用中實現(xiàn)圖片上傳和預(yù)覽功能,感興趣的小伙伴跟著小編一起來看看吧
    2025-05-05
  • React?setState是異步還是同步原理解析

    React?setState是異步還是同步原理解析

    這篇文章主要為大家介紹了React?setState是異步還是同步原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 回顧Javascript React基礎(chǔ)

    回顧Javascript React基礎(chǔ)

    這篇文章主要介紹了Javascript React基礎(chǔ),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的同學(xué)可以參考一下
    2019-06-06
  • React 模塊聯(lián)邦多模塊項目實戰(zhàn)詳解

    React 模塊聯(lián)邦多模塊項目實戰(zhàn)詳解

    這篇文章主要介紹了React 模塊聯(lián)邦多模塊項目實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 你知道怎么在 HTML 頁面中使用 React嗎

    你知道怎么在 HTML 頁面中使用 React嗎

    這篇文章主要為大家詳細(xì)介紹了如何在HTML頁面中使用 React,使用使用js模塊化的方式開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • react+axios實現(xiàn)github搜索用戶功能(示例代碼)

    react+axios實現(xiàn)github搜索用戶功能(示例代碼)

    這篇文章主要介紹了react+axios實現(xiàn)搜索github用戶功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • React?Router?v6路由懶加載的2種方式小結(jié)

    React?Router?v6路由懶加載的2種方式小結(jié)

    React?Router?v6?的路由懶加載有2種實現(xiàn)方式,1是使用react-router自帶的?route.lazy,2是使用React自帶的?React.lazy,下面我們就來看看它們的具體實現(xiàn)方法吧
    2024-04-04
  • 解決React報錯Parameter 'props' implicitly has an 'any' type

    解決React報錯Parameter 'props' implicitly&nb

    這篇文章主要為大家介紹了React報錯Parameter 'props' implicitly has an 'any' type的解決處理方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 在React中實現(xiàn)子組件向父組件傳值的幾種方法

    在React中實現(xiàn)子組件向父組件傳值的幾種方法

    在React應(yīng)用中,組件間的通信是常見的需求,通常,父組件通過props向子組件傳遞數(shù)據(jù),但有時也需要子組件向父組件傳遞數(shù)據(jù),本文將探討如何在React中實現(xiàn)子組件向父組件傳值的幾種方法,需要的朋友可以參考下
    2025-04-04

最新評論