Jadual Kandungan
Aplikasi watchEffect
Rumah hujung hadapan web View.js Ketahui tentang watchEffect dalam Vue3 dalam satu artikel dan bincangkan tentang senario aplikasinya!

Ketahui tentang watchEffect dalam Vue3 dalam satu artikel dan bincangkan tentang senario aplikasinya!

May 06, 2022 pm 06:56 PM
vue vue.js vue3

Artikel ini akan membawa anda melalui watchEffect dalam Vue3, memperkenalkan kesan sampingannya dan bercakap tentang perkara yang boleh dilakukannya, saya harap ia dapat membantu semua orang.

Ketahui tentang watchEffect dalam Vue3 dalam satu artikel dan bincangkan tentang senario aplikasinya!

watchEffect, yang melaksanakan fungsi yang diluluskan dengan serta-merta sambil menjejak kebergantungannya secara reaktif dan menjalankan semula fungsi tersebut apabila kebergantungannya berubah. (Belajar perkongsian video: tutorial video vue)

Dalam erti kata lain: watchEffect adalah bersamaan dengan menggabungkan sumber kebergantungan dan fungsi panggil balik watch apabila anda menggunakan sebarang reaktif Apabila kebergantungan dikemas kini, fungsi panggil balik akan dilaksanakan semula. Tidak seperti watch, fungsi panggil balik watchEffect akan dilaksanakan serta-merta (iaitu { immediate: true })

Artikel ini terutamanya bercakap tentang cara menggunakan 清除副作用 untuk menjadikan kod kami lebih elegan~

Kesan sampingan watchEffect

Apakah kesan sampingan (side effect)? Secara ringkasnya, kesan sampingan adalah untuk melakukan operasi tertentu, seperti pengubahsuaian data pembolehubah luaran atau pembolehubah , panggilan ke antara muka luaran, dsb. Fungsi panggil balik watchEffect ialah fungsi kesan sampingan, kerana kami menggunakan watchEffect untuk melaksanakan operasi tertentu selepas mendengar perubahan dalam kebergantungan.

Apabila fungsi kesan sampingan dilaksanakan, ia pasti akan memberi sedikit kesan kepada sistem Contohnya, pemasa setInterval dilaksanakan dalam fungsi kesan sampingan, jadi kita mesti menangani kesan sampingan. Fungsi Vue3 watchEffect yang mendengar kesan sampingan boleh menerima fungsi onInvalidate sebagai parameter input untuk mendaftarkan panggilan balik apabila pembersihan gagal. Panggilan balik ketidaksahihan ini akan dicetuskan apabila:

  • Kesan sampingan akan dilaksanakan semula (iaitu nilai kebergantungan berubah)
  • Pendengar dihentikan (dipulangkan oleh panggilan eksplisit) Nilai berhenti mendengar, atau berhenti mendengar dipanggil secara tersirat apabila komponen dipunggah)
import { watchEffect, ref } from 'vue'

const count = ref(0)
watchEffect((onInvalidate) => {
  console.log(count.value)
  onInvalidate(() => {
    console.log('执行了onInvalidate')
  })
})

setTimeout(()=> {
  count.value++
}, 1000)
Salin selepas log masuk

Arahan yang dicetak oleh kod di atas ialah: 0 -> > -> 执行了onInvalidate,最后执行1

Analisis: Semasa pemulaan, nilai

dicetak dahulu count, dan kemudian kerana pemasa mengemas kini nilai 0 kepada count, sebelah kesan akan dilaksanakan semula pada masa ini, jadi 1 Fungsi panggil balik akan dicetuskan, mencetak onInvalidate, dan kemudian melaksanakan fungsi kesan sampingan, mencetak nilai 执行了onInvalidate count. 1

import { watchEffect, ref } from 'vue'

const count = ref(0)
const stop = watchEffect((onInvalidate) => {
  console.log(count.value)
  onInvalidate(() => {
    console.log('执行了onInvalidate')
  })
})

setTimeout(()=> {
  stop()
}, 1000)
Salin selepas log masuk
Kod di atas: Apabila kami memaparkan dan melaksanakan fungsi

untuk berhenti mendengar, fungsi panggil balik stop juga akan dicetuskan. Begitu juga, apabila komponen di mana onInvalidatewatchEffect terletak dinyahpasang, secara tersirat akan memanggil fungsi untuk berhenti mendengar, jadi fungsi panggil balik stop juga boleh dicetuskan. onInvalidate

Aplikasi watchEffect

menggunakan fungsi

yang tidak malas dan yang diluluskan dalam watchEffect Apa yang boleh kita lakukan? onInvalidate

Senario 1: Biasanya kita mentakrifkan pemasa atau mendengar acara Kita perlu mentakrifkan atau mendaftarkannya dalam fungsi cangkuk kitaran hayat, dan kemudian mountedKosongkan. pemasa atau batalkan fungsi mendengar dalam fungsi cangkuk. Dengan cara ini, logik kita bertaburan dalam dua kitaran hayat, yang tidak kondusif untuk penyelenggaraan dan pembacaan. beforeUnmount

Jika saya menggunakan

, logik penciptaan dan pemusnahan disatukan, dan kod itu lebih elegan dan mudah dibaca~watchEffect

// 定时器注册和销毁
watchEffect((onInvalidate) => {
  const timer = setInterval(()=> {
    // ...
  }, 1000)
  onInvalidate(() => clearInterval(timer))
})

const handleClick = () => {
 // ...
}
// dom的监听和取消监听
onMounted(()=>{
  watchEffect((onInvalidate) => {
    document.querySelector('.btn').addEventListener('click', handleClick, false)
    onInvalidate(() => document.querySelector('.btn').removeEventListener('click', handleClick))
  })
})
Salin selepas log masuk

Senario 2 : Menggunakan watchEffect Buat pendikit anti goncang (seperti membatalkan permintaan)

const id = ref(13)
watchEffect(onInvalidate => {
   // 异步请求
  const token = performAsyncOperation(id.value)
  // 如果id频繁改变,会触发失效函数,取消之前的接口请求
  onInvalidate(() => {
    // id has changed or watcher is stopped.
    // invalidate previously pending async operation
    token.cancel()
  })
})
Salin selepas log masuk
......

Sudah tentu

juga boleh melakukan banyak perkara, seperti membuka watchEffect tetingkap Pop timbul yang diubah suai, jika perubahan dalam modal dikesan, kita boleh menetapkan semula parameter awal dalam fungsi id... Ini hanya pengenalan, saya harap semua orang akan meneroka lebih lanjut~onInvalidate

(Mempelajari perkongsian video:

Pembangunan bahagian hadapan web, Video pengaturcaraan asas)

Atas ialah kandungan terperinci Ketahui tentang watchEffect dalam Vue3 dalam satu artikel dan bincangkan tentang senario aplikasinya!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Vue.js vs React: Pertimbangan khusus projek Vue.js vs React: Pertimbangan khusus projek Apr 09, 2025 am 12:01 AM

Vue.js sesuai untuk projek kecil dan sederhana dan lelaran yang cepat, sementara React sesuai untuk aplikasi besar dan kompleks. 1) Vue.js mudah digunakan dan sesuai untuk situasi di mana pasukan tidak mencukupi atau skala projek kecil. 2) React mempunyai ekosistem yang lebih kaya dan sesuai untuk projek dengan prestasi tinggi dan keperluan fungsional yang kompleks.

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Cara menambah fungsi ke butang untuk vue Cara menambah fungsi ke butang untuk vue Apr 08, 2025 am 08:51 AM

Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Cara Menggunakan Watch di Vue Cara Menggunakan Watch di Vue Apr 07, 2025 pm 11:36 PM

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apr 07, 2025 pm 11:57 PM

Pembangunan pelbagai halaman Vue adalah cara untuk membina aplikasi menggunakan rangka kerja VUE.JS, di mana permohonan dibahagikan kepada halaman berasingan: Penyelenggaraan kod: Memisahkan aplikasi ke dalam beberapa halaman boleh menjadikan kod lebih mudah untuk dikendalikan dan diselenggarakan. Modularity: Setiap halaman boleh digunakan sebagai modul yang berasingan untuk penggunaan semula dan penggantian mudah. Routing mudah: Navigasi antara halaman boleh diuruskan melalui konfigurasi penghalaan mudah. Pengoptimuman SEO: Setiap halaman mempunyai URL sendiri, yang membantu SEO.

Cara Menggunakan Vue Traversal Cara Menggunakan Vue Traversal Apr 07, 2025 pm 11:48 PM

Terdapat tiga kaedah umum untuk vue.js untuk melintasi tatasusunan dan objek: Arahan V-untuk digunakan untuk melintasi setiap elemen dan membuat templat; Arahan V-mengikat boleh digunakan dengan V-untuk menetapkan nilai atribut secara dinamik untuk setiap elemen; dan kaedah .map boleh menukar elemen array ke dalam tatasusunan baru.

Cara melompat ke Div Vue Cara melompat ke Div Vue Apr 08, 2025 am 09:18 AM

Terdapat dua cara untuk melompat elemen div di Vue: Gunakan Vue Router dan tambahkan komponen router-link. Tambah pendengar acara @Click dan panggil ini. $ Router.push () kaedah untuk melompat.

Cara melompat tag ke vue Cara melompat tag ke vue Apr 08, 2025 am 09:24 AM

Kaedah untuk melaksanakan lompatan tag dalam Vue termasuk: menggunakan tag dalam templat HTML untuk menentukan atribut HREF. Gunakan komponen router-link routing VUE. Gunakan ini. $ Router.push () kaedah dalam JavaScript. Parameter boleh dilalui melalui parameter pertanyaan dan laluan dikonfigurasikan dalam pilihan penghala untuk lompatan dinamik.

See all articles