欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談React useDebounce 防抖原理

 更新時間:2022年08月18日 10:59:00   作者:HHH 917  
本文主要介紹了淺談React useDebounce 防抖原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、js防抖

// func 需要去抖動的函數(shù)  delay 延時執(zhí)行時間
const debounce = (func, delay) => {
    let timeout;
    //...param es6語法  獲取形參數(shù)組 argaments
    return (...param) => {
    	// 每次 進(jìn)入清除上一個已經(jīng)執(zhí)行/未執(zhí)行的定時器
        if (timeout) {
            clearTimeout(timeout);
        }
        //定時器 delay 時間后執(zhí)行 func函數(shù)
        timeout = setTimeout(() => {
            func(...param);
        }, delay)
    }
}
// 使用
const logPrint= debounce(() =>console.log('打印執(zhí)行'),2000)
logPrint(); //
logPrint(); //
logPrint(); //
logPrint(); // 打印執(zhí)行

2、React custom Hook useDebounce

useDebounce

useDebounce 搭配 useEffect useState 的使用

index.js

//utils/index.js
import { useEffect, useState } from 'react';
export const useDebounce = (value, delay) => {
    const [deouncedValue, setDebuouncedValue] = useState(value)
    useEffect(() => {
        //每次在value變化以后,設(shè)置一個定時器
        const timeout = setTimeout(() => setDebuouncedValue(value), delay)
        //每次在上一個useEffect處理完以后再運行
        return () => clearTimeout(timeout)
    }, [value, delay])
    return deouncedValue
}

index.jsx

//使用 index.jsx
import {  useDebounce } from 'utils';
......
const [param, setParam] = useState({
    name: '',
    personId: ''
});
const debounceParam = useDebounce(param, 2000);
  useEffect(() => {
  	console.log('打印執(zhí)行',debounceParam);
    // fetch(`${apiUrl}/projects?${qs.stringify(cleanObject(debounceParam))}`).then(async response => {
    //   if (response.ok) {
    //     setList(await response.json());
    //   }
  }, [debounceParam]);
return(
	<input
	   type="text"
	   value={param.name}
	   onChange={evt =>
	     setParam({
	       ...param,
	       name: evt.target.value
	     })
	   }
	 />
)

 到此這篇關(guān)于淺談React useDebounce 防抖原理的文章就介紹到這了,更多相關(guān)React useDebounce 防抖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React組件間傳值及跨組件通信詳解

    React組件間傳值及跨組件通信詳解

    這篇文章主要介紹了React組件間傳值及跨組件通信的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • React?中的?JS?報錯及容錯方案

    React?中的?JS?報錯及容錯方案

    這篇文章主要為大家介紹了React?中的?JS?報錯及容錯方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳細(xì)分析React 表單與事件

    詳細(xì)分析React 表單與事件

    這篇文章主要介紹了React 表單與事件的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • React實現(xiàn)createElement 和 cloneElement的區(qū)別

    React實現(xiàn)createElement 和 cloneElement的區(qū)別

    本文詳細(xì)介紹了React中React.createElement和React.cloneElement兩種方法的定義、用法、區(qū)別及適用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • React this.setState方法使用原理分析介紹

    React this.setState方法使用原理分析介紹

    我們知道,在React中沒有像Vue那種數(shù)據(jù)雙向綁定的效果。而this.setState方法就是用來對數(shù)據(jù)進(jìn)行更改的。而通過this.setState方法更改的數(shù)據(jù),會讓組件的render重新渲染,并且刷新數(shù)據(jù)
    2022-09-09
  • React Hook用法示例詳解(6個常見hook)

    React Hook用法示例詳解(6個常見hook)

    這篇文章主要介紹了React Hook用法詳解(6個常見hook),本文通過實例代碼給大家介紹了6個常見hook,需要的朋友可以參考下
    2021-04-04
  • react腳手架如何配置less和ant按需加載的方法步驟

    react腳手架如何配置less和ant按需加載的方法步驟

    這篇文章主要介紹了react腳手架如何配置less和ant按需加載的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 淺談React雙向數(shù)據(jù)綁定原理

    淺談React雙向數(shù)據(jù)綁定原理

    在 React中是不存在雙向數(shù)據(jù)綁定的機(jī)制的,需要我們自己對其進(jìn)行實現(xiàn)。本文主要介紹一下React雙向數(shù)據(jù)綁定,感興趣的可以了解一下
    2021-11-11
  • 詳解React 和 Redux的關(guān)系

    詳解React 和 Redux的關(guān)系

    這篇文章主要為大家介紹了React 和 Redux的關(guān)系,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • react-native組件中NavigatorIOS和ListView結(jié)合使用的方法

    react-native組件中NavigatorIOS和ListView結(jié)合使用的方法

    這篇文章主要給大家介紹了關(guān)于react-native組件中NavigatorIOS和ListView結(jié)合使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-09-09

最新評論