Rumah > Artikel > hujung hadapan web > Apakah vue anti-goncang?
Dalam vue, anti goncang bermaksud melaksanakan panggilan balik n saat selepas peristiwa dicetuskan semula dalam n saat ini, masa akan dimulakan semula; untuk dicetuskan, Fungsi pemprosesan acara hanya akan dilaksanakan sekali jika acara tidak dicetuskan lagi dalam selang masa tertentu Jika acara dicetuskan semula sebelum selang masa yang ditetapkan tiba, kelewatan akan dimulakan semula.
Persekitaran pengendalian tutorial ini: sistem windows7, versi vue3, komputer DELL G3.
Mengenai pengoptimuman projek Vue, pendikit anti goncang benar-benar perlu difahami.
Nyahlantunkan
Laksanakan panggilan balik n saat selepas peristiwa dicetuskan jika ia dicetuskan semula dalam n saat ini, Kemudian masa semula ;
Penjelasan: Apabila peristiwa dicetuskan secara berterusan dan tiada peristiwa dicetuskan semula dalam selang masa tertentu, fungsi pemprosesan acara akan dilaksanakan sekali Jika ia dicetuskan semula sebelum selang masa yang ditetapkan, acara, kelewatan akan bermula semula.
Pemahaman yang popular ialah kita hanya perlu klik sekali sahaja semasa proses permintaan klik atau klik muat, tetapi disebabkan permintaan yang perlahan, kita klik berkali-kali, menyebabkan permintaan anti goncang adalah selepas mengklik banyak kali hanya akan diminta untuk kali terakhir.
Kes 1:
Apabila acara tatal dicetuskan secara berterusan, fungsi pemegang tidak dilaksanakan serta-merta Apabila acara tatal tidak dicetuskan dalam masa 1000 milisaat, ia akan dicetuskan sekali dengan fungsi pemegang kelewatan.
function debounce(fn, wait) { let timeout = null return function() { if(timeout !== null) clearTimeout(timeout) timeout = setTimeout(fn, wait); } } function handle() { console.log(Math.random()) } window.addEventListener('scroll', debounce(handle, 1000))
Parameter kedua addEventListener sebenarnya ialah kaedah pulangan dalam fungsi nyahlantun = null Baris kod ini hanya akan dilaksanakan sekali apabila addEventListener mencetuskan acara tersebut dicetuskan, penangguhan terakhir akan dikosongkan dan penangguhan baharu akan direkodkan Apabila acara tatal berhenti mencetuskan, penangguhan terakhir yang direkodkan tidak akan dikosongkan dan boleh ditangguhkan Ini ialah fungsi nyahlantun >
Kes 2:Rendering: (Masukkan teks sekali dan laksanakan selepas 2 saat. Jika anda memasukkan beberapa kali, ia masih akan dilaksanakan sekali. Bilangan input hanya akan peningkatan. 1):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>防抖</title> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="app"> 输入内容:<input type="text" @keyup="deb"/> <div> 输入次数:{{num}}</div> </div> <script> let time var app=new Vue({ el:'#app', data:{ num:0, }, methods:{ deb: function () { let that = this if (time) { clearTimeout(time) } time = setTimeout(function () { that.num++ console.log('输入了'+that.num+'次') time = undefined; }, 2000) } } }) </script> </body> </html>
Masa yang ditentukan secara global tidak dapat ditentukan Semasa proses input berterusan, peristiwa keyup dicetuskan beberapa kali, dan pemasa akan dipaparkan semula setiap kali, hanya apabila selang input melebihi (atau. adalah sama dengan) masa yang ditetapkan 2 saat, num akan dilaksanakan.
Dipadankan dengan pengubah suai papan kekunci: (.masukkan sebagai contoh)
Dengan cara ini, selepas menekan Enter secara berterusan, input hanya akan dicetuskan sekali. Ia hanya akan dicetuskan sekali apabila selang Enter ditetapkan selama dua saat.<div id="app"> 输入内容:<input type="text" class="input" @keyup.enter="deb"/> <div> 输入次数:{{num}}</div> </div>
Jadi, memandangkan butang submit akan diklik dan disentuh secara berterusan, anti goncang sangat diperlukan.
Sudah tentu, terdapat penyelesaian lain Sebagai contoh, projek menggunakan kaedah butang kawalan. .
[Tutorial video berkaitan yang disyorkan:
tutorial video vue, Bermula dengan bahagian hadapan web]
Atas ialah kandungan terperinci Apakah vue anti-goncang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!