日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JavaScript:簡單理解防抖和節流,如何定義防抖和節流函數

來源: 責編: 時間:2023-12-18 09:47:23 258觀看
導讀防抖防抖函數,就是防止抖動,避免事件重復觸發。比如監聽輸入框的輸入,不應該在用戶每輸入一個字符就觸發監聽,而是在用戶輸入結束后再來監聽。流程為:1、事件觸發;2、開啟定時器;3、當事件再次觸發的時候,就會清除上個定時器,

防抖

防抖函數,就是防止抖動,避免事件重復觸發。比如監聽輸入框的輸入,不應該在用戶每輸入一個字符就觸發監聽,而是在用戶輸入結束后再來監聽。Elo28資訊網——每日最新資訊28at.com

流程為:1、事件觸發;2、開啟定時器;3、當事件再次觸發的時候,就會清除上個定時器,然后重新開啟新的定時器;4、時間到了以后,就開始處理事件操作。Elo28資訊網——每日最新資訊28at.com

現在有一個輸入框,代碼如下:Elo28資訊網——每日最新資訊28at.com

import React from "react";const Child2 = () => {  return <input onChange={({ target: { value } }) => {    console.log(value)  }} />};

效果如下圖:Elo28資訊網——每日最新資訊28at.com

圖片圖片Elo28資訊網——每日最新資訊28at.com

每輸入一個字符,就觸發監聽事件。如果是搜索查詢的話,那就不合適了。Elo28資訊網——每日最新資訊28at.com

現在在監聽事件上設置防抖:Elo28資訊網——每日最新資訊28at.com

import React from "react";const Child2 = () => {  const inputChange = debounce(({ target: { value } }) => {    console.log(value)  })  return <input onChange={inputChange} />};function debounce(fn) {  let timeout = null;  return function () {    clearTimeout(timeout);    timeout = setTimeout(() => {      fn.apply(this, arguments);    }, 1000);  };}

如果在定時器時間內,事件再次觸發,那么就清空之前的定時器,然后重新開啟新的定時器。Elo28資訊網——每日最新資訊28at.com

效果圖:Elo28資訊網——每日最新資訊28at.com

圖片圖片Elo28資訊網——每日最新資訊28at.com

這就是防抖。Elo28資訊網——每日最新資訊28at.com

節流

節流就是控制事件觸發的頻率。比如按鈕點擊,在短時間內多次點擊,那么只需要觸發一次即可。Elo28資訊網——每日最新資訊28at.com

比如:Elo28資訊網——每日最新資訊28at.com

import React from "react";const Child2 = () => {  return <button onClick={() => {    console.log("點擊")  }}>點擊</button>};

連續點擊多次,效果如下圖,如果是涉及到網絡請求的話,那么得不償失了。Elo28資訊網——每日最新資訊28at.com

圖片圖片Elo28資訊網——每日最新資訊28at.com

現在定義一下節流函數:Elo28資訊網——每日最新資訊28at.com

// 節流function throttle(fn) {  let timeout = null;  return function () {    if (timeout) return;    timeout = setTimeout(() => {      fn.apply(this, arguments);      timeout = null;    }, 1000);  }}

完整代碼:Elo28資訊網——每日最新資訊28at.com

import React from "react";const Child2 = () => {  const click = throttle(() => {    console.log("點擊")  })  return <button onClick={click}>點擊</button>};// 節流function throttle(fn) {  let timeout = null;  return function () {    if (timeout) return;    timeout = setTimeout(() => {      fn.apply(this, arguments);      timeout = null;    }, 1000);  }}

在一秒內連續點擊多次,最后只有一次有效。圖片Elo28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-48365-0.htmlJavaScript:簡單理解防抖和節流,如何定義防抖和節流函數

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 圖解系統設計之Instagram

下一篇: 14個工具,讓 DevOps 和 SRE 遙遙領先!

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就&ldquo;胡錫進炒股是否知道認真報道&rdquo;展開討論。有
  • 蘋果公司要求三星和LG Display生產「無邊框」OLED iPhone顯示屏

    據 The Elec 報道,蘋果已要求其供應商為未來的 iPhone 型號開發「無邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發新的 OLED 顯示面
  • Counterpoint :OPPO雙旗艦戰略全面落地 高端產品銷量增長22%

    2023年6月30日,全球行業分析機構Counterpoint Research發布的《中國智能手機高端市場白皮書》顯示,中國智能手機品牌正在尋求高質量發展,中國高端智能
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
Top 主站蜘蛛池模板: 西和县| 九台市| 甘孜| 商丘市| 清新县| 德昌县| 洱源县| 津市市| 北辰区| 合阳县| 石狮市| 博客| 徐汇区| 楚雄市| 莎车县| 阳朔县| 吴堡县| 库伦旗| 集贤县| 石首市| 郁南县| 凤山县| 利川市| 新余市| 灵璧县| 连江县| 丹东市| 台中县| 紫云| 罗平县| 咸阳市| 揭阳市| 中阳县| 黎平县| 资溪县| 榆中县| 平谷区| 溆浦县| 玉门市| 安泽县| 武冈市|