Rumah hujung hadapan web View.js Cara data vue3 memantau watch/watchEffect

Cara data vue3 memantau watch/watchEffect

May 12, 2023 pm 06:31 PM
vue3 watch watcheffect

Kita semua tahu bahawa peranan pendengar adalah untuk mencetuskan setiap kali keadaan reaktif berubah Dalam gabungan API, kita boleh menggunakan fungsi watch() dan fungsi watchEffect(),

Apabila anda menukar keadaan responsif, ia mungkin mencetuskan kemas kini komponen Vue dan panggilan balik pendengar pada masa yang sama.

Secara lalai, panggilan balik pendengar ciptaan pengguna akan dipanggil sebelum komponen Vue dikemas kini. Ini bermakna DOM yang anda akses dalam panggilan balik pendengar akan menjadi keadaan sebelum ia dikemas kini oleh Vue.

Jadi, mari kita lihat, bagaimana kita boleh memanfaatkannya dengan baik? Apakah perbezaan antara mereka?

fungsi watch()

jam perlu mendengar sumber data tertentu, seperti mendengar rujukan Parameter pertama jam tangan boleh menjadi "sumber data" dalam bentuk yang berbeza: ia boleh menjadi A

ref (termasuk sifat yang dikira), objek reaktif, fungsi getter atau susunan berbilang sumber data, Seperti berikut:

const x = ref(0)
const y = ref(0)

// 单个 ref
watch(x, (newX) => {
  console.log(`x is ${newX}`)
})

// getter 函数
watch(
  () => x.value + y.value,
  (sum) => {
    console.log(`sum of x + y is: ${sum}`)
  }
)



// 多个来源组成的数组
watch([x, () => y.value], ([newX, newY]) => {
  console.log(`x is ${newX} and y is ${newY}`)
})


const obj = reactive({ count: 0 })
//传入一个响应式对象
watch(obj, (newValue, oldValue) => {
  // 在嵌套的属性变更时触发
  // 注意:`newValue` 此处和 `oldValue` 是相等的
  // 因为它们是同一个对象!
})

obj.count++


watch(
  () => obj.count,
  (newValue, oldValue) => {
    // 注意:`newValue` 此处和 `oldValue` 是相等的
    // *除非* obj.count 被整个替换了
  },
  { deep: true }
)
Salin selepas log masuk

Perhatikan bahawa anda tidak boleh mendengar terus nilai atribut objek reaktif

const obj = reactive({ count: 0 })

// 错误,因为 watch() 得到的参数是一个 number
watch(obj.count, (count) => {
  console.log(`count is: ${count}`)
})
Salin selepas log masuk

Di sini anda perlu menggunakan fungsi

getter yang mengembalikan atribut:

// 提供一个 getter 函数
watch(
  () => obj.count,
  (count) => {
    console.log(`count is: ${count}`)
  }
)
Salin selepas log masuk

jam tangan malas secara lalai: panggil balik hanya akan dilaksanakan apabila sumber data berubah. Tetapi dalam beberapa senario, kami mahu melaksanakan panggilan balik dengan segera apabila mencipta pendengar. Sebagai contoh, kami ingin meminta beberapa data awal dan kemudian meminta semula data apabila keadaan yang berkaitan berubah.

Kita boleh memaksa panggilan balik pendengar untuk melaksanakan serta-merta dengan menghantar pilihan

segera: benar:

watch(source, (newValue, oldValue) => {
  // 立即执行,且当 `source` 改变时再次执行
}, { immediate: true })
Salin selepas log masuk

watchEffect() fungsi

watchEffect( ) membolehkan kami

menjejaki kebergantungan reaktif panggilan balik secara automatik.

const todoId = ref(1)
const data = ref(null)

watchEffect(async () => {
  const response = await fetch(
    `https://jsonplaceholder.typicode.com/todos/${todoId.value}`
  )
  data.value = await response.json()
})
Salin selepas log masuk

Dalam contoh ini, panggilan balik akan dilaksanakan serta-merta,

tidak perlu menyatakan segera: benar. Semasa pelaksanaan, ia secara automatik menjejaki todoId.value sebagai kebergantungan (serupa dengan harta yang dikira). Apabila todoId.value berubah, panggilan balik akan dilaksanakan semula. Dengan watchEffect(), kami tidak lagi perlu menghantar todoId secara eksplisit sebagai nilai sumber .

watchEffect() sesuai untuk pendengar dengan pelbagai kebergantungan Untuk contoh ini dengan hanya satu kebergantungan, faedahnya agak kecil. Selain itu, jika anda perlu mendengar beberapa sifat dalam struktur data bersarang, watchEffect() mungkin lebih cekap daripada pendengar mendalam, kerana ia hanya akan menjejaki sifat yang digunakan dalam panggilan balik, dan bukannya menjejaki semua sifat secara rekursif.

Jika anda ingin mengakses DOM yang dikemas kini oleh Vue dalam panggilan balik pendengar, anda perlu menentukan pilihan

flush: ‘post’, post-flush watchEffect() Di sana adalah alias watchPostEffect():

import { watchPostEffect } from 'vue'

watchPostEffect(() => {
  /* 在 Vue 更新后执行 */
})
Salin selepas log masuk

Hubungan dan perbezaan antara jam tangan dan watchEffect

Kedua-dua jam tangan dan watchEffect boleh melaksanakan panggilan balik dengan kesan sampingan secara responsif. Perbezaan utama antara mereka ialah cara

menjejak kebergantungan reaktif:

tonton hanya runut

sumber data yang didengari secara eksplisit. Ia tidak akan menjejaki apa-apa yang diakses dalam panggilan balik. Selain itu, panggil balik hanya akan dicetuskan jika sumber data benar-benar berubah. jam tangan akan mengelakkan kebergantungan penjejakan apabila kesan sampingan berlaku, jadi kami boleh mengawal dengan lebih tepat apabila fungsi panggil balik dicetuskan.

watchEffect akan menjejaki kebergantungan semasa berlakunya kesan sampingan. Ia secara automatik akan menjejaki semua sifat reaktif yang boleh diakses semasa penyegerakan. Ini lebih mudah dan kodnya cenderung lebih bersih, tetapi kadangkala kebergantungan reaktifnya kurang jelas.

Sesuai untuk pendengar dengan pelbagai kebergantungan

Atas ialah kandungan terperinci Cara data vue3 memantau watch/watchEffect. 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Pengguna menghadapi gangguan yang jarang berlaku: Jam tangan pintar Samsung Watch tiba-tiba mengalami isu skrin putih Pengguna menghadapi gangguan yang jarang berlaku: Jam tangan pintar Samsung Watch tiba-tiba mengalami isu skrin putih Apr 03, 2024 am 08:13 AM

Anda mungkin menghadapi masalah garis hijau yang muncul pada skrin telefon pintar anda Walaupun anda tidak pernah melihatnya, anda mesti melihat gambar berkaitan di Internet. Jadi, pernahkah anda menghadapi situasi di mana skrin jam tangan pintar bertukar menjadi putih? Pada 2 April, CNMO mendapat tahu daripada media asing bahawa seorang pengguna Reddit berkongsi gambar di platform sosial, menunjukkan skrin jam tangan pintar siri Samsung Watch bertukar menjadi putih. Pengguna menulis: "Saya sedang mengecas apabila saya pergi, dan apabila saya kembali, ia adalah seperti ini. Saya cuba untuk memulakan semula, tetapi skrin masih seperti ini semasa proses mulakan semula skrin jam tangan pintar Samsung Watch." Pengguna Reddit tidak menyatakan model khusus. Walau bagaimanapun, jika dilihat dari gambar, ia sepatutnya Samsung Watch5. Sebelum ini, seorang lagi pengguna Reddit turut melaporkan

vue3+vite: Bagaimana untuk menyelesaikan ralat apabila menggunakan memerlukan untuk mengimport imej secara dinamik dalam src vue3+vite: Bagaimana untuk menyelesaikan ralat apabila menggunakan memerlukan untuk mengimport imej secara dinamik dalam src May 21, 2023 pm 03:16 PM

Penggunaan vue3+vite:src memerlukan pengimportan imej secara dinamik dan laporan ralat dan penyelesaian vue3+vite secara dinamik Jika vue3 dibangunkan menggunakan skrip taip, akan terdapat mesej ralat untuk keperluan untuk memperkenalkan imej tidak boleh digunakan :require(' .../assets/test.png') diimport kerana typescript tidak menyokong require, jadi import digunakan Berikut ialah cara menyelesaikannya: gunakan awaitimport

Cara Vue3 menghuraikan penurunan harga dan melaksanakan penyerlahan kod Cara Vue3 menghuraikan penurunan harga dan melaksanakan penyerlahan kod May 20, 2023 pm 04:16 PM

Vue melaksanakan bahagian hadapan blog dan perlu melaksanakan penghuraian markdown Jika terdapat kod, ia perlu melaksanakan penyerlahan kod. Terdapat banyak pustaka parsing markdown untuk Vue, seperti markdown-it, vue-markdown-loader, marked, vue-markdown, dsb. Perpustakaan ini semuanya sangat serupa. Ditanda digunakan di sini, dan highlight.js digunakan sebagai pustaka penonjolan kod. Langkah-langkah pelaksanaan khusus adalah seperti berikut: 1. Pasang perpustakaan bergantung Buka tetingkap arahan di bawah projek vue dan masukkan arahan berikut npminstallmarked-save//marked untuk menukar markdown ke htmlnpmins.

Cara memuat semula sebahagian kandungan halaman dalam Vue3 Cara memuat semula sebahagian kandungan halaman dalam Vue3 May 26, 2023 pm 05:31 PM

Untuk mencapai muat semula separa halaman, kami hanya perlu melaksanakan pemaparan semula komponen setempat (dom). Dalam Vue, cara paling mudah untuk mencapai kesan ini ialah menggunakan arahan v-if. Dalam Vue2, selain menggunakan arahan v-if untuk memaparkan semula dom setempat, kami juga boleh mencipta komponen kosong baharu Apabila kami perlu memuat semula halaman setempat, lompat ke halaman komponen kosong ini dan kemudian masuk semula pengawal beforeRouteEnter dalam komponen kosong. Seperti yang ditunjukkan dalam rajah di bawah, cara mengklik butang muat semula dalam Vue3.X untuk memuatkan semula DOM dalam kotak merah dan memaparkan status pemuatan yang sepadan. Memandangkan pengawal dalam komponen dalam sintaks persediaan skrip dalam Vue3.X hanya mempunyai o

Bagaimana untuk memilih avatar dan memangkasnya dalam Vue3 Bagaimana untuk memilih avatar dan memangkasnya dalam Vue3 May 29, 2023 am 10:22 AM

Kesan terakhir ialah memasang komponen VueCropper yarnaddvue-cropper@next Nilai pemasangan di atas adalah untuk Vue3 Jika ia adalah Vue2 atau anda ingin menggunakan kaedah lain untuk merujuk, sila lawati alamat npm rasminya. Ia juga sangat mudah untuk merujuk dan menggunakannya dalam komponen Anda hanya perlu memperkenalkan komponen yang sepadan dan fail gayanya. Saya tidak merujuknya secara global di sini, tetapi hanya memperkenalkan import{userInfoByRequest}from'../js/api. ' dalam fail komponen saya import{VueCropper}dari'vue-cropper&

Cara menggunakan komponen boleh guna semula Vue3 Cara menggunakan komponen boleh guna semula Vue3 May 20, 2023 pm 07:25 PM

Prakata Sama ada ia adalah vue atau react, apabila kita menghadapi berbilang kod berulang, kita akan memikirkan cara untuk menggunakan semula kod ini, dan bukannya mengisi fail dengan sekumpulan kod berlebihan. Malah, kedua-dua vue dan react boleh mencapai penggunaan semula dengan mengekstrak komponen, tetapi jika anda menemui beberapa serpihan kod kecil dan anda tidak mahu mengekstrak fail lain, sebagai perbandingan, react boleh digunakan dalam yang sama Isytiharkan widget yang sepadan dalam fail , atau laksanakannya melalui fungsi render, seperti: constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

Cara menggunakan defineCustomElement untuk menentukan komponen dalam Vue3 Cara menggunakan defineCustomElement untuk menentukan komponen dalam Vue3 May 28, 2023 am 11:29 AM

Menggunakan Vue untuk membina elemen tersuai WebComponents ialah nama kolektif untuk satu set API asli web yang membenarkan pembangun mencipta elemen tersuai yang boleh diguna semula (customelements). Faedah utama elemen tersuai ialah ia boleh digunakan dengan mana-mana rangka kerja, walaupun tanpa satu. Ia sesuai apabila anda menyasarkan pengguna akhir yang mungkin menggunakan tindanan teknologi bahagian hadapan yang berbeza, atau apabila anda ingin mengasingkan aplikasi akhir daripada butiran pelaksanaan komponen yang digunakannya. Vue dan WebComponents ialah teknologi pelengkap, dan Vue menyediakan sokongan yang sangat baik untuk menggunakan dan mencipta elemen tersuai. Anda boleh menyepadukan elemen tersuai ke dalam aplikasi Vue sedia ada, atau menggunakan Vue untuk membina

Cara menggunakan vue3+ts+axios+pinia untuk mencapai penyegaran yang tidak masuk akal Cara menggunakan vue3+ts+axios+pinia untuk mencapai penyegaran yang tidak masuk akal May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia menyedari penyegaran yang tidak masuk akal 1. Mula-mula muat turun aiXos dan pinianpmipinia dalam projek--savenpminstallaxios--save2. AxiosResponse}daripada"axios";importaxiosfrom'axios';import{ElMess

See all articles