日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue組件中節流函數的失效的原因和解決方法

瀏覽:325日期:2022-10-22 10:58:33

今天使用節流函數的時候遇見了一個問題,搞了半天才找到原因,所以在這里做個總結。

節流函數

瀏覽器的一些事件,如:resize,scroll,mousemove等。這些事件觸發頻率太過頻繁,綁定在這些事件上的回調函數會不停的被調用,加重瀏覽器的負擔,導致用戶體驗非常糟糕。所以先賢們發明了節流函數,簡單版本如下:

function throttle (f, wait = 200) { let last = 0 return function (...args) { let now = Date.now() if (now - last > wait) { last = now f.apply(this, args) } }}

假設有一個 vue 組件 svgMark。這個組件中渲染的元素要在頁面窗口大小發生變化時重繪 reDraw ,而重繪時要使用節流函數防止性能損耗。正常情況下代碼如下:

<template> <div>{{ index }}</div></template><script>import { throttle } from ’lodash’export default { name: ’SvgMark’, data() { return { index: 0 } }, mounted() { window.addEventListener(’resize’, this.reDraw) }, beforeDestroy() { window.removeEventListener(’resize’, this.reDraw) }, methods: { reDraw: throttle(function() { this.index++ }, 500) }}</script></script>

一般情況下這樣用沒什么問題。但是有這樣一個場景,使用節流函數時卻失效了,即當這個組件被 v-for 循環加載了很多次:

<template> <div> <svgMark v-for='item in 10' :key='item.id' /> </div></template>

這個時候無論渲染了多少個 svgMark 組件,在窗口大小改變的時候卻只觸發了第一個組件和第 n 割組件的重繪,為什么其他組件沒有觸發呢?這就要從頭說起了。

節流函數

節流函數在初始化的時候產生了一個閉包,閉包內保存了變量 last ,這個 last 記錄了上一次執行 f 函數的時間。而當下一次觸發節流函數的時候,如果此時時間 now 減去上次時間 last 小于了我們規定的節流時間 wait ,那么函數 f 將不會執行。

很顯然,第一個子組件在觸發節流函數的時候產生了一個 last,而第二個組件在觸發節流函數時候的時產生的 now 并沒有滿足 now - last > wait 的條件,所以沒有執行重繪代碼。而到了第 n 個組件觸發節流函數的時候,滿足了 now - last > wait 的條件所以重繪成功了。

vue 組件

vue 組件在代碼編譯的階段,組件 svgMark 中的方法 reDraw: throttle(function() { this.index++ }, 500) 就已經被編譯成了類似如下函數:

reDraw: ƒ (...args) { let now = Date.now() if (now - last > wait) { last = now f.apply(this, args) }}

由于函數是引用類型,所有使用子組件 svgMark 的 methods 中的 reDraw 都指向了同一個內存地址,也就是說所有子組件的 reDraw 方法都是同一個函數。

因為所有組件都公用了同一個節流函數,當然就會產生節流了。那怎么解決問題呢?對癥下藥就要讓每個組件產生自己的節流函數,而不產生共用。代碼如下

子組件:

<template> <div>{{ index }}</div></template><script>import { throttle } from ’lodash’export default { name: ’SvgMark’, data() { return { index: 0 } }, mounted() { this.reDraw = throttle(() => { this.index++ }, 500) window.addEventListener(’resize’, this.reDraw) }, beforeDestroy() { window.removeEventListener(’resize’, this.reDraw) }}</script>

我們在 mounted 聲明周期函數中手動聲明了 reDraw 函數替代 methods 中的 reDraw ,這樣在每個組件初始化的時候都會產生一個自己的節流函數了。需要注意此時節流函數的參數使用了箭頭函數,因為這樣 this 才會指向組件實例。

以上就是節流函數帶給我的坑,現在分享給大家。[下班][鼓掌]

以上就是vue組件中節流函數的失效和解決方法的詳細內容,更多關于vue 組件節流函數的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线亚洲成人| 久久国产三级| 成人在线黄色| 国产精品久久久免费| 国产欧美日韩亚洲一区二区三区| 亚洲一区二区三区久久久| 国产美女精品| 在线视频亚洲欧美中文| 亚洲91在线| 欧美综合社区国产| 免费看久久久| 国产精品蜜芽在线观看| 免费高潮视频95在线观看网站| 日韩中文欧美| 在线国产一区| 自拍自偷一区二区三区| 亚洲bt欧美bt精品777| 日韩av电影一区| 91成人精品观看| 国产精品超碰| 91综合视频| 91久久国产| 综合激情网站| 免费日韩成人| 久久精品动漫| 免费久久精品视频| **爰片久久毛片| 97精品国产一区二区三区 | 青草综合视频| 精品国产中文字幕第一页| av高清不卡| 中文国产一区| 亚洲日本欧美| 精品伊人久久| 久久网站免费观看| 日韩在线麻豆| 国产一区二区久久久久| 婷婷六月综合| 欧美日韩精品一区二区三区在线观看| 精品网站aaa| 午夜国产一区二区| 国产亚洲欧美日韩精品一区二区三区| 综合日韩av| 色8久久久久| 在线观看精品| 日韩美女国产精品| 欧美日韩国产观看视频| 中国女人久久久| 国产精品一区二区三区av麻| 亚洲精品.com| 日本在线不卡视频| 黑人精品一区| 日韩精品免费视频人成| 久久一区国产| 蜜桃久久av一区| www.九色在线| 亚洲欧洲国产精品一区| av最新在线| 日本国产欧美| 米奇777超碰欧美日韩亚洲| 国产精品主播| 视频一区中文字幕国产| 国产极品嫩模在线观看91精品| 国产一区二区三区自拍| 国产精品第十页| 日本欧美在线看| 91亚洲国产| 欧美日韩黄网站| 久久精品免费一区二区三区 | 伊人成人在线视频| 精品国产亚洲一区二区在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 麻豆久久久久久久| 亚洲成人免费| 久久久久久色| 亚洲欧美伊人| 国产福利资源一区| 天堂成人国产精品一区| 久久久一二三| 精品免费在线| 欧美一级二级视频| 在线日韩成人| 亚洲国产不卡| 三上亚洲一区二区| 欧美激情日韩| 视频一区日韩精品| 亚洲一区观看| 亚洲女同一区| 久久国产电影| 欧洲av不卡| 电影91久久久| 国产精品日韩精品在线播放 | 精品三级久久久| 国产丝袜一区| 日韩中文字幕一区二区高清99| 亚洲高清毛片| 黄在线观看免费网站ktv| 国产精品美女在线观看直播| 日本亚洲不卡| 中文字幕亚洲精品乱码| 伊人久久亚洲热| 精品一区三区| 99久久99久久精品国产片果冰 | 欧美天堂视频| 国产成人免费av一区二区午夜| 久久av日韩| 国产人成精品一区二区三| 综合视频一区| 亚洲综合激情在线| 亚洲另类av| 亚洲人www| 婷婷久久免费视频| 亚洲精品三级| 亚洲综合福利| 日韩三级视频| 日韩高清在线不卡| 日本亚洲最大的色成网站www| 亚洲最新av| 深夜福利亚洲| 亚洲1区在线| 日韩精品欧美大片| 日韩av中文字幕一区| 日韩二区三区四区| 欧美亚洲一区二区三区| 国产精品自在| 国语精品一区| 麻豆国产在线| 成人羞羞视频播放网站| 色爱av综合网| 午夜日本精品| 亚洲一区二区成人| 亚洲一区av| 日韩精品亚洲一区二区三区免费| 欧美视频久久| 老司机免费视频一区二区三区| 精品久久久久中文字幕小说| 国产精品毛片久久| 99成人在线视频| 中文欧美日韩| 日韩精品一区二区三区中文在线| 欧美日韩1区| 久久精品国产99国产精品| 国产日韩电影| 午夜国产精品视频| 亚洲aa在线| 精品一区视频| 国产精品亚洲一区二区三区在线观看| 99久久婷婷| 中文字幕av一区二区三区人 | 欧美视频久久| 精品久久久久久久| 性欧美videohd高精| 国产一在线精品一区在线观看| 亚洲一区二区动漫| 日本久久一区| 久久久久久婷| 欧美在线亚洲| 日本va欧美va瓶| 久久久久久久欧美精品| 青草综合视频| 欧美羞羞视频| 国产亚洲一区在线| 青青伊人久久| 日韩专区精品| 久久高清国产| 美女性感视频久久| 四虎影视精品| 日韩精品视频网| 麻豆精品在线观看| 久久免费黄色| 日韩成人av影视| 中文字幕成在线观看| 美女久久网站| 久久精品五月| 国产亚洲一级| 999在线观看精品免费不卡网站| 亚洲精选av| 1024精品久久久久久久久| 亚洲一二av| 97欧美在线视频| 免费av一区二区三区四区| 亚洲精品在线国产| 91综合网人人| 欧美亚洲国产激情| 日韩av中文字幕一区二区三区| 中文字幕在线视频网站| 日韩专区欧美专区| 精品一区av| 丝袜美腿亚洲色图| 久久精品亚洲| 免费观看久久久4p| 精品国内亚洲2022精品成人| 亚洲一区国产| 日本激情一区| 婷婷亚洲成人| 成人午夜亚洲| 日本一区二区三区中文字幕| 日韩精品欧美| 综合激情五月婷婷| 欧美精品日日操|