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

react組件封裝input框的防抖處理的項(xiàng)目實(shí)現(xiàn)

 更新時(shí)間:2023年04月27日 10:58:35   作者:Leslie21.  
本文主要介紹了react組件封裝input框的防抖處理的項(xiàng)目實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

防抖

防抖就是指觸發(fā)事件后在 n 秒內(nèi)函數(shù)只能執(zhí)行一次,如果在 n 秒內(nèi)又觸發(fā)了事件,則會重新計(jì)算函數(shù)執(zhí)行時(shí)間

項(xiàng)目中有些input框需要做防抖處理,防止每次輸入都要發(fā)起請求或者做判斷,也就是減少觸發(fā)頻率,以便提高性能,避免資源浪費(fèi)

1.類組件版本

//防抖的方法
const debounceOther = (func, wait = 800) => {
  let timeout; // 定時(shí)器變量
  return function () {
    clearTimeout(timeout); // 每次觸發(fā)時(shí)先清除上一次的定時(shí)器,然后重新計(jì)時(shí)
    timeout = setTimeout(() => {
      func(arguments);
    }, wait); // 指定 xx ms 后觸發(fā)真正想進(jìn)行的操作 handler
  };
};

在項(xiàng)目中經(jīng)常會將許多方法或復(fù)用性較高的事件封裝,然后在頁面引入

例:

防抖只需要看下面例子中g(shù)etInputValue和inputChange即可

這是基于antd封裝的一個(gè)彈窗組件,在input框 需要判斷輸入后是否與原有值重復(fù),不做防抖處理則輸入一次判斷一次 

這里是將有封裝好的debounceOther函數(shù)的js文件直接引入到這個(gè)組件中使用了

import { debounceOther } from ".........";
class RelationModal extends Component {
  state = { visible: false, inputErr: '', inputValue: '' };
  getInputValue = debounceOther(() => {
    let { specSelect } = this.props;    //原有數(shù)據(jù)
    //是否存在相同的
    let index = specSelect.findIndex(item => item.group === this.state.inputValue);
    this.setState({
      inputErr: index === -1 ? "" : '節(jié)點(diǎn)名稱不允許重復(fù)'
    })
  },500)
  //拿到inputValue input輸入框有變化500毫秒后 調(diào)用防抖方法 
  inputChange = e => {
    this.setState({
      inputValue:e.target.value
    },()=>{
      this.getInputValue()
    }) 
  };
}

2.函數(shù)組件版本

useCallback的作用其實(shí)是用來避免子組件不必要的reRender

import {useRef,useCallback,useEffect} from 'react'
function useDebounce(fn,delay,setval){
  const {current}=useRef({fn,timer:null})
  useEffect(()=>{
    current.fn=fn
  },[fn])
  return useCallback((e)=>{
    setval(e.target.value)
    if(current.timer){
        clearTimeout(current.timer)
    }
    current.timer=setTimeout(()=>{
        current.fn(e)
    },delay)
  })
}
export default useDebounce

調(diào)用

import debounce from '../utils/debounce'
import {useState} from 'react'
function My(){
    let [val,setval]=useState('')
    const inputval=debounce(()=>{
        console.log(val);
    },1000,setval)
    return <div>
       <input type="text" value={val} onChange={(e)=>inputval(e)}/>
    </div>
}
export default My

到此這篇關(guān)于react組件封裝input框的防抖處理的項(xiàng)目實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)react input框防抖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 作為老司機(jī)使用 React 總結(jié)的 11 個(gè)經(jīng)驗(yàn)教訓(xùn)

    作為老司機(jī)使用 React 總結(jié)的 11 個(gè)經(jīng)驗(yàn)教訓(xùn)

    這篇文章主要介紹了作為老司機(jī)使用 React 總結(jié)的 11 個(gè)經(jīng)驗(yàn)教訓(xùn),需要的朋友可以參考下
    2017-04-04
  • 解決react-connect中使用forwardRef遇到的問題

    解決react-connect中使用forwardRef遇到的問題

    這篇文章主要介紹了解決react-connect中使用forwardRef遇到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在 React 項(xiàng)目中使用 Auth0 并集成到后端服務(wù)的配置步驟詳解

    在 React 項(xiàng)目中使用 Auth0 并集成到后端服務(wù)的配置步驟詳解

    這篇文章主要介紹了在 React 項(xiàng)目中使用 Auth0 并集成到后端服務(wù)的配置步驟詳解,通過本文詳細(xì)步驟,您可以將 Auth0 集成到 React 項(xiàng)目并與后端服務(wù)交互,需要的朋友可以參考下
    2024-07-07
  • React父子組件傳值(組件通信)的實(shí)現(xiàn)方法

    React父子組件傳值(組件通信)的實(shí)現(xiàn)方法

    本文主要介紹了React父子組件傳值(組件通信)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 解決webpack -p壓縮打包react報(bào)語法錯(cuò)誤的方法

    解決webpack -p壓縮打包react報(bào)語法錯(cuò)誤的方法

    這篇文章主要給大家介紹了關(guān)于解決webpack -p壓縮打包react報(bào)語法錯(cuò)誤的方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • React?split實(shí)現(xiàn)分割字符串的使用示例

    React?split實(shí)現(xiàn)分割字符串的使用示例

    當(dāng)我們需要將一個(gè)字符串按照指定的分隔符進(jìn)行分割成數(shù)組時(shí),我們可以在組件的生命周期方法中使用split方法來實(shí)現(xiàn)這個(gè)功能,本文就來介紹一下,感興趣的可以了解下
    2023-10-10
  • React函數(shù)組件傳參的實(shí)現(xiàn)

    React函數(shù)組件傳參的實(shí)現(xiàn)

    React函數(shù)組件通過接受props實(shí)現(xiàn)組件間的數(shù)據(jù)傳遞,通過組件標(biāo)簽的屬性向子組件傳遞數(shù)據(jù),并在子組件中通過參數(shù)接收,還可以使用ES6的解構(gòu)賦值,函數(shù)也能作為props傳遞,以實(shí)現(xiàn)父子組件間的交互和通信,下面就來具體了解一下
    2024-09-09
  • React hooks使用方法全面匯總

    React hooks使用方法全面匯總

    這篇文章主要介紹了react hooks實(shí)現(xiàn)原理,文中給大家介紹了useState dispatch函數(shù)如何與其使用的Function Component進(jìn)行綁定,實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • react中實(shí)現(xiàn)修改input的defaultValue

    react中實(shí)現(xiàn)修改input的defaultValue

    這篇文章主要介紹了react中實(shí)現(xiàn)修改input的defaultValue方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React使用Redux Toolkit的方法示例

    React使用Redux Toolkit的方法示例

    Redux Toolkit可以幫助開發(fā)者更快速、更高效地編寫Redux應(yīng)用,本文主要介紹了React使用Redux Toolkit的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04

最新評論

淳化县| 尼勒克县| 台北市| 镇赉县| 大渡口区| 舒兰市| 鄂托克前旗| 新龙县| 正镶白旗| 焦作市| 翁牛特旗| 醴陵市| 板桥市| 河间市| 安阳县| 隆昌县| 泸定县| 黄龙县| 苗栗县| 红河县| 博罗县| 祁门县| 彭山县| 鄱阳县| 宜春市| 沙坪坝区| 宿迁市| 龙井市| 健康| 浠水县| 武宁县| 仁寿县| 时尚| 丹阳市| 罗山县| 澄江县| 黄山市| 扎囊县| 保定市| 台州市| 华坪县|