Vue ialah rangka kerja JavaScript popular yang menyediakan cara yang cekap untuk mencipta antara muka pengguna yang dinamik. Dalam dokumentasi Vue, terdapat fungsi yang sangat berguna, fungsi penyegaran tarik ke bawah, yang membolehkan pengguna menyegarkan halaman apabila menarik ke bawah. Artikel ini akan memperkenalkan proses pelaksanaan fungsi ini.
Untuk melaksanakan muat semula tarik-turun, anda perlu menggunakan dua arahan Vue: v-on dan v-bind. Arahan v-on digunakan untuk mengikat peristiwa, dan arahan v-bind digunakan untuk mengikat atribut.
Pertama, anda perlu menentukan objek data dalam contoh Vue utama untuk menyimpan status komponen pada halaman yang perlu dimuat semula:
data: { refreshFlag: false, startY: 0, moveY: 0, endY: 0 }
Empat pembolehubah ditakrifkan di sini: refreshFlag menunjukkan sama ada ia menyegarkan Status, startY, moveY dan endY digunakan untuk merekod maklumat lokasi tarik-turun pengguna.
Seterusnya, ikat arahan v-on dan v-bind pada komponen yang perlu dimuat semula. Arahan v-on digunakan untuk mengikat peristiwa touchstart, touchmove dan touchend, dan arahan v-bind digunakan untuk mengikat kelas gaya. Kod khusus adalah seperti berikut:
<div class="scroll" ref="scroll" v-bind:class="{active: refreshFlag}" v-on:touchstart="handleTouchStart" v-on:touchmove="handleTouchMove" v-on:touchend="handleTouchEnd"> <!-- 列表内容 --> </div>
Atribut ref digunakan di sini untuk mendapatkan objek DOM elemen tatal untuk memudahkan operasi seterusnya.
Seterusnya, anda perlu menulis tiga fungsi pemprosesan acara, masing-masing sepadan dengan acara touchstart, touchmove dan touchend. Dalam fungsi ini, anda perlu menukar pembolehubah dalam objek data dan mengemas kini kelas gaya. Kod khusus adalah seperti berikut:
handleTouchStart(event) { if (this.refreshFlag) { return; } this.startY = event.touches[0].pageY; }, handleTouchMove(event) { if (this.refreshFlag) { return; } this.moveY = event.touches[0].pageY - this.startY; if (this.moveY > 0 && this.moveY < 40) { event.preventDefault(); } if (this.moveY >= 40) { this.refreshFlag = true; } }, handleTouchEnd(event) { if (this.moveY >= 40) { this.refreshFlag = false; this.$emit('refresh'); } this.moveY = 0; }
Dalam fungsi pemprosesan acara permulaan sentuh, rekod kedudukan apabila pengguna mengklik pada skrin dan bersedia untuk pengiraan seterusnya bagi nilai moveY.
Dalam fungsi pemprosesan acara touchmove, berdasarkan jarak pergerakan jari pengguna, ia dinilai sama ada ia berada pada ambang muat semula tarik-turun Jika ia dicapai, refreshFlag ditetapkan kepada benar. Selain itu, anda perlu menggunakan kaedah preventDefault() untuk menghalang acara tatal lalai.
Dalam fungsi pemprosesan acara hujung sentuh, tentukan sama ada ambang muat semula telah dicapai. Jika ya, cetuskan acara muat semula, tetapkan refreshFlag kepada palsu dan tetapkan semula moveY kepada 0.
Kod lengkap adalah seperti berikut:
<template> <div> <div class="scroll" ref="scroll" v-bind:class="{active: refreshFlag}" v-on:touchstart="handleTouchStart" v-on:touchmove="handleTouchMove" v-on:touchend="handleTouchEnd"> <!-- 列表内容 --> </div> </div> </template> <script> export default { data: { refreshFlag: false, startY: 0, moveY: 0, endY: 0 }, methods: { handleTouchStart(event) { if (this.refreshFlag) { return; } this.startY = event.touches[0].pageY; }, handleTouchMove(event) { if (this.refreshFlag) { return; } this.moveY = event.touches[0].pageY - this.startY; if (this.moveY > 0 && this.moveY < 40) { event.preventDefault(); } if (this.moveY >= 40) { this.refreshFlag = true; } }, handleTouchEnd(event) { if (this.moveY >= 40) { this.refreshFlag = false; this.$emit('refresh'); } this.moveY = 0; } } } </script> <style scoped> .scroll { height: 300px; overflow: scroll; position: relative; } .active { position: relative; top: 40px; } </style>
Perhatikan bahawa peristiwa muat semula dicetuskan dalam kod ini boleh terikat kepada fungsi pemprosesan dalam komponen induk untuk pemerolehan semula dan pemaparan daripada data. Sebagai contoh, anda boleh menulis ini dalam komponen induk:
<template> <div> <MyComponent v-on:refresh="refreshData" /> </div> </template> <script> export default { methods: { refreshData() { // 重新获取数据 // 更新UI } } } </script>
Ringkasnya, melalui kaedah di atas, anda boleh melaksanakan fungsi muat semula tarik-turun dalam Vue. Ciri ini bukan sahaja sangat berguna untuk beberapa aplikasi web mudah alih, tetapi juga boleh memainkan peranan dalam meningkatkan pengalaman pengguna dalam aplikasi web desktop.
Atas ialah kandungan terperinci Proses pelaksanaan fungsi muat semula tarik-turun dalam dokumentasi Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!