Une analyse approfondie de l'anti-shake/throttling ultime dans Vue3
Cet article vous présente l'anti-shake/throttle ultime dans Vue 3 (y compris les méthodes courantes d'anti-shake/throttle). Cet article décrira non seulement les méthodes anti-shake ou throttle d'origine, mais il apportera également un nouvel emballage). méthode plus simple et plus claire à utiliser.
Dans le processus de développement front-end, le processus impliquant une interaction avec les utilisateurs doit essentiellement être traité. L'opération normale consiste à ajouter un anti-shake ou une limitation à la position correspondante.
Ajout de fonctions anti-tremblement ou de limitation : premièrement, pour empêcher les utilisateurs d'effectuer des opérations fréquentes, deuxièmement, pour économiser certaines ressources du serveur et réduire le gaspillage de ressources.
Principe d'anti-secousse ou d'étranglement
Anti-secousse (anti-rebond)
Si l'utilisateur opère plusieurs fois fréquemment, la dernière fois prévaudra bien sûr, la première fois peut également être utilisée. comme base pour la mise à jour des données ou les demandes de ressources réseau pour éliminer les opérations redondantes ou réduire un certain gaspillage de ressources de demande. [Recommandations associées : tutoriel vidéo vuejs, développement web front-end]
Exemple de code
function debounce (fn, delay = 300){ let timer = null return function (...args) { clearTimeout(timer) timer = setTimeout(()=>{ fn.call(this, ...args) }, delay); } }
Utiliser
debounce(()=> count += 1, 1000)
throttle (throttle)
Dans un certain plage horaire, le déclencheurs utilisateur Il ne sera exécuté qu'une seule fois plusieurs fois pour empêcher les utilisateurs d'effectuer des opérations fréquentes.
Exemple de code
let timer = null function throttle (fn, delay = 300) { if(timer == null){ timer = setTimeout(() => { fn() clearTimeout(timer) timer = null }, delay); } }
Utilisation
throttle(()=> count += 1, 1000)
Instructions d'environnement
vue 3
- vite
Nouveau package
Ici, j'en parlerai en deux modules. L’un est anti-tremblement ; l’autre est étrangleur.
Bien que la différence entre les deux ne soit pas très grande, il y a quand même une différence. Montez dans la voiture, les gars.
Debounce
Examinons d'abord le contenu commun des packages.
Paquets communs-1
Code
function debounce (fn, delay = 300){ let timer = null return function (...args) { if(timer != null){ clearTimeout(timer) timer = null } timer = setTimeout(()=>{ fn.call(this, ...args) }, delay); } }
Utiliser
const addCount = debounce(()=> count.value += 1, 1000)
Paquets communs-2
Code
let timer = null function debounce (fn, delay = 1000){ if(timer != null){ clearTimeout(timer) timer = null } timer = setTimeout(fn, delay) }
Utiliser
const addCount = () => debounce(()=> count.value += 1, 1000)
Nouveau paquet
Ici, nous devons utiliser vue 3 < <code>customRef
dans /code> pour mettre en œuvre notre nouvelle approche. Je n’écrirai pas en détail ici. J'ajoute des commentaires directement au-dessus de chaque ligne de code. Je crois que mon ami, tu peux comprendre. vue 3
中的 customRef
来实现我们的新方式。这里我就不具体写了。我直接在每行代码上面添加注释。我相信朋友你是能看懂的。
代码
// 从 vue 中引入 customRef 和 ref import { customRef, ref } from "vue" // data 为创建时的数据 // delay 为防抖时间 function debounceRef (data, delay = 300){ // 创建定时器 let timer = null; // 对 delay 进行判断,如果传递的是 null 则不需要使用 防抖方案,直接返回使用 ref 创建的。 return delay == null ? // 返回 ref 创建的 ref(data) : // customRef 中会返回两个函数参数。一个是:track 在获取数据时收集依赖的;一个是:trigger 在修改数据时进行通知派发更新的。 customRef((track, trigger) => { return { get () { // 收集依赖 track() // 返回当前数据的值 return data }, set (value) { // 清除定时器 if(timer != null){ clearTimeout(timer) timer = null } // 创建定时器 timer = setTimeout(() => { // 修改数据 data = value; // 派发更新 trigger() }, delay) } } }) }
使用
// 创建 const count = debounceRef(0, 300) // 函数中使用 const addCount = () => { count.value += 1 } // v-model 中使用 <input type="text" v-model="count">
节流(throttle)
我们还是一样,先看常见封装内容。
常见封装-1
代码
let timer = null function throttle (fn, delay = 300) { if(timer == null){ timer = setTimeout(() => { fn() clearTimeout(timer) timer = null }, delay); } }
使用
const addCount = () => throttle(()=> count.value += 1, 1000)
常见封装-2
代码
function throttle (fn, delay = 300) { let timer = null return function (...args) { if(timer == null){ timer = setTimeout(() => { fn.call(this, ...args) clearTimeout(timer) timer = null }, delay); } } }
使用
const addCount = throttle(()=> count.value += 1, 1000)
新封装
节流和防抖在封装和使用上大同小异。
代码
// data 为创建时的数据 // delay 为节流时间 function throttleRef (data, delay = 300){ // 创建定时器 let timer = null; // 对 delay 进行判断,如果传递的是 null 则不需要使用 节流方案,直接返回使用 ref 创建的。 return delay == null ? // 返回 ref 创建的 ref(data) : // customRef 中会返回两个函数参数。一个是:track 在获取数据时收集依赖的;一个是:trigger 在修改数据时进行通知派发更新的。 customRef((track, trigger) => { return { get () { // 收集依赖 track() // 返回当前数据的值 return data }, set (value) { // 判断 if(timer == null){ // 创建定时器 timer = setTimeout(() => { // 修改数据 data = value; // 派发更新 trigger() // 清除定时器 clearTimeout(timer) timer = null }, delay) } } } }) }
使用
// 创建 const count = debounceRef(0, 300) // 函数中使用 const addCount = () => { count.value += 1 } // v-model 中使用 <input type="text" v-model="count">
总结
以上便是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)
这篇文章的全部内容,如有不足或朋友你有更好的方式或者其他独到的见解,欢迎评论 + 私信。
当然朋友你又学到了一招可以点赞 + 关注 + 评论哦。
希望本篇文章对正在阅读的朋友你有所帮助。
想了解vue 2
Coderrreee
rrreeethrottle
🎜🎜Nous sommes toujours les mêmes, regardez d'abord le contenu commun de l'emballage. 🎜🎜🎜Paquets communs-1🎜🎜🎜Code 🎜rrreee🎜Utiliser 🎜rrreee🎜🎜Paquets communs-2🎜🎜🎜Code 🎜rrreee🎜Utiliser 🎜rrreee🎜🎜Nouveau paquet🎜🎜 🎜Létranglement et anti-secousse dans l'emballage et utilisation beaucoup le même. 🎜🎜Code🎜rrreee🎜Utilisation🎜rrreee🎜🎜Résumé🎜🎜🎜🎜Ce qui précède estL'anti-shake/throttle ultime dans Vue 3 (y compris les méthodes courantes d'anti-shake/throttle)
S'il y a toute lacune dans l'ensemble du contenu ou si vous avez un meilleur moyen ou d'autres idées uniques, n'hésitez pas à commenter + envoyer un message privé. 🎜🎜🎜Bien sûr, mon ami, tu as appris une autre astuce, tu peux aimer + suivre + commenter. 🎜🎜J'espère que cet article vous sera utile, amis qui lisez. 🎜🎜Les amis qui veulent savoir comment implémenter la même solution dans vue 2
peuvent cliquer ici 🎜 Implémentation de l'anti-shake/throttling CustomRef dans Vue 2🎜🎜🎜 (Partage vidéo d'apprentissage : 🎜introduction à vuejs ? tutoriel🎜, 🎜Vidéo de programmation de base🎜)🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Vue : une combinaison parfaite d'outils de développement front-end À l'ère actuelle de développement rapide d'Internet, le développement front-end est devenu de plus en plus important. Alors que les utilisateurs ont des exigences de plus en plus élevées en matière d’expérience des sites Web et des applications, les développeurs front-end doivent utiliser des outils plus efficaces et plus flexibles pour créer des interfaces réactives et interactives. En tant que deux technologies importantes dans le domaine du développement front-end, PHP et Vue.js peuvent être considérés comme une arme parfaite lorsqu'ils sont associés. Cet article explorera la combinaison de PHP et Vue, ainsi que des exemples de code détaillés pour aider les lecteurs à mieux comprendre et appliquer ces deux éléments.

Lors des entretiens de développement front-end, les questions courantes couvrent un large éventail de sujets, notamment les bases HTML/CSS, les bases JavaScript, les frameworks et les bibliothèques, l'expérience du projet, les algorithmes et les structures de données, l'optimisation des performances, les requêtes inter-domaines, l'ingénierie front-end, les modèles de conception et les nouvelles technologies et tendances. Les questions de l'intervieweur sont conçues pour évaluer les compétences techniques du candidat, son expérience en matière de projet et sa compréhension des tendances du secteur. Par conséquent, les candidats doivent être parfaitement préparés dans ces domaines pour démontrer leurs capacités et leur expertise.

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Django est un framework d'application Web écrit en Python qui met l'accent sur un développement rapide et des méthodes propres. Bien que Django soit un framework Web, pour répondre à la question de savoir si Django est un front-end ou un back-end, vous devez avoir une compréhension approfondie des concepts de front-end et de back-end. Le front-end fait référence à l'interface avec laquelle les utilisateurs interagissent directement, et le back-end fait référence aux programmes côté serveur. Ils interagissent avec les données via le protocole HTTP. Lorsque le front-end et le back-end sont séparés, les programmes front-end et back-end peuvent être développés indépendamment pour mettre en œuvre respectivement la logique métier et les effets interactifs, ainsi que l'échange de données.

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django est un framework d'application Web efficace et évolutif. Il est capable de prendre en charge plusieurs modèles de développement Web, notamment MVC et MTV, et peut facilement développer des applications Web de haute qualité. Django prend non seulement en charge le développement back-end, mais peut également créer rapidement des interfaces frontales et obtenir un affichage de vue flexible via un langage de modèle. Django combine le développement front-end et le développement back-end dans une intégration transparente, afin que les développeurs n'aient pas à se spécialiser dans l'apprentissage.

Combinaison de Golang et de la technologie front-end : pour explorer le rôle de Golang dans le domaine front-end, des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et des applications mobiles, la technologie front-end est devenue de plus en plus importante. Dans ce domaine, Golang, en tant que puissant langage de programmation back-end, peut également jouer un rôle important. Cet article explorera comment Golang est combiné avec la technologie front-end et démontrera son potentiel dans le domaine front-end à travers des exemples de code spécifiques. Le rôle de Golang dans le domaine front-end est celui d'un outil efficace, concis et facile à apprendre.

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service
