最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0中的watch偵聽(tīng)器實(shí)例詳解

 更新時(shí)間:2021年10月09日 11:07:53   作者:Youyzq  
雖然計(jì)算屬性在大多數(shù)情況下更合適,但有時(shí)也需要一個(gè)自定義的偵聽(tīng)器,這就是為什么Vue通過(guò)watch選項(xiàng)提供了一個(gè)更通用的方法,來(lái)響應(yīng)數(shù)據(jù)的變化,這篇文章主要給大家介紹了關(guān)于vue3.0中watch偵聽(tīng)器的相關(guān)資料,需要的朋友可以參考下

前言

雖然計(jì)算屬性在大多數(shù)情況下更合適,但有時(shí)也需要一個(gè)自定義的偵聽(tīng)器。這就是為什么 Vue 通過(guò)watch選項(xiàng)提供了一個(gè)更通用的方法,來(lái)響應(yīng)數(shù)據(jù)的變化。當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷較大的操作時(shí),這個(gè)方式是最有用的。

偵聽(tīng)器和計(jì)算屬性的區(qū)別

計(jì)算屬性里不可以做異步操作,偵聽(tīng)器可以做異步操作,相當(dāng)于計(jì)算屬性的升級(jí)版

 

vue3如何使用watch呢?

基本使用

<template>
  <h1>watch偵聽(tīng)器頁(yè)面</h1>
  <p>普通偵聽(tīng)數(shù)據(jù):{{ num }}</p>
  <button @click="butFn">點(diǎn)擊</button>
</template>

script

import { ref, watch } from 'vue'
// 記得用到什么就要導(dǎo)入什么vue3的新特性,按需調(diào)用
 setup() {
 
    const num = ref(0)
    // watch(要偵聽(tīng)的數(shù)據(jù),回調(diào)函數(shù))
    watch(num, (v1, v2) => {
      // v1 是改變以后的新值
      // v2 是改變前的值
      console.log(v1, v2)
      // 要點(diǎn):偵聽(tīng)普通函數(shù)可以獲取修改前后的值,被偵聽(tīng)的數(shù)據(jù)必須是響應(yīng)式的
    })
    
    // 單機(jī)事件
      const butFn = () => {
      num.value++
    }
    
     return { butFn, num }
}

監(jiān)聽(tīng)多個(gè)響應(yīng)式數(shù)據(jù)

    const num = ref(0)
    const num2 = ref(20)
    
    watch([num, num2], (v1, v2) => {
      // 存入的結(jié)果是一個(gè)數(shù)組,結(jié)果返回的也是一個(gè)已數(shù)組格式的結(jié)果
      // v1是最新結(jié)果的數(shù)組
      // v2是舊數(shù)據(jù)的數(shù)組
      console.log('v1', v1, 'v2', v2)
    // 總結(jié):可以得到更新前后的值,偵聽(tīng)的結(jié)果也是數(shù)組數(shù)據(jù)順序一致
    })

偵聽(tīng)reactive定義的響應(yīng)式數(shù)據(jù)

	const obj = reactive({
      msg: '奇奇怪怪可可愛(ài)愛(ài)'
    })
    
   watch(obj, () => {
      // 只能獲取到最新的值
      console.log(obj.msg)
    })

總結(jié):如果偵聽(tīng)對(duì)象,那么偵聽(tīng)器的回調(diào)函數(shù)的兩個(gè)參數(shù)是一樣的結(jié)果,表示最新的對(duì)象數(shù)據(jù),此時(shí)也可以直接讀取被偵聽(tīng)的對(duì)象,那么得到的值也是最新的。

監(jiān)聽(tīng)reactive定義的響應(yīng)式數(shù)據(jù)的某一個(gè)屬性

	const obj = reactive({
      msg: '奇奇怪怪可可愛(ài)愛(ài)'
    })
    
	watch(() => obj.msg,(v1, v2) => {
        // v1 就是被監(jiān)聽(tīng)數(shù)據(jù)的最新值
        // v2 就是被監(jiān)聽(tīng)數(shù)據(jù)的原有值
        console.log(v1, v2)
        // 總結(jié):如果偵聽(tīng)對(duì)象中當(dāng)個(gè)屬性,需要使用箭頭函數(shù)的方式
        // 偵聽(tīng)更少的數(shù)據(jù)有利于提高性能
      }
    )

配置選項(xiàng)用法

   const obj = reactive({
      msg: {
        info: 'ooo'
      }
    })
   watch(() => obj.msg,(v1, v2) => {
        console.log(v1, v2)
      },
      {
        // 首次渲染組件就觸發(fā)一次
        immediate: true,
        // 開(kāi)啟深度監(jiān)聽(tīng),對(duì)象里面的數(shù)據(jù)如果發(fā)生變化也會(huì)被偵聽(tīng)到
        // 如果監(jiān)聽(tīng)的數(shù)據(jù)是一個(gè)比較長(zhǎng)的表達(dá)式,那么需要用一個(gè)函數(shù)的方式
        // 但是寫成函數(shù)形式之后,里層的數(shù)據(jù)變化不到,所以需要添加deep選項(xiàng)
        deep: true
      }
    )

總結(jié)

到此這篇關(guān)于vue3.0中watch偵聽(tīng)器實(shí)例詳解的文章就介紹到這了,更多相關(guān)vue3.0 watch偵聽(tīng)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • antd form表單數(shù)據(jù)回顯操作

    antd form表單數(shù)據(jù)回顯操作

    這篇文章主要介紹了antd form表單數(shù)據(jù)回顯操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vuejs element table 表格添加行,修改,單獨(dú)刪除行,批量刪除行操作

    vuejs element table 表格添加行,修改,單獨(dú)刪除行,批量刪除行操作

    這篇文章主要介紹了vuejs element table 表格添加行,修改,單獨(dú)刪除行,批量刪除行操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 詳解vue-cli 接口代理配置

    詳解vue-cli 接口代理配置

    本篇主要介紹了vue-cli 接口代理配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 深入淺析vue全局環(huán)境變量和模式

    深入淺析vue全局環(huán)境變量和模式

    這篇文章主要介紹了vue全局環(huán)境變量和模式的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • vue默認(rèn)插槽的理解與實(shí)例代碼

    vue默認(rèn)插槽的理解與實(shí)例代碼

    對(duì)于插槽的概念和使用,這是vue的一個(gè)難點(diǎn),這需要我們靜下心來(lái),慢慢研究,下面這篇文章主要給大家介紹了關(guān)于vue默認(rèn)插槽的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)

    vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue3使用mqtt的示例代碼

    vue3使用mqtt的示例代碼

    這篇文章主要介紹了vue3使用mqtt的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 解決antd Form 表單校驗(yàn)方法無(wú)響應(yīng)的問(wèn)題

    解決antd Form 表單校驗(yàn)方法無(wú)響應(yīng)的問(wèn)題

    這篇文章主要介紹了解決antd Form 表單校驗(yàn)方法無(wú)響應(yīng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Vue無(wú)法訪問(wèn).env.development定義的變量值問(wèn)題及解決

    Vue無(wú)法訪問(wèn).env.development定義的變量值問(wèn)題及解決

    這篇文章主要介紹了Vue無(wú)法訪問(wèn).env.development定義的變量值問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue?父子組件共用mixins的注意點(diǎn)

    vue?父子組件共用mixins的注意點(diǎn)

    這篇文章主要介紹了vue?父子組件共用mixins的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評(píng)論

房山区| 石林| 罗山县| 苍溪县| 化德县| 石台县| 宝鸡市| 吐鲁番市| 柳林县| 玛多县| 金川县| 上栗县| 瓦房店市| 威信县| 安福县| 包头市| 响水县| 紫云| 苍溪县| 正宁县| 手游| 涟水县| 南郑县| 扎鲁特旗| 大渡口区| 永宁县| 莒南县| 河北省| 财经| 新平| 兰坪| 交城县| 晋州市| 屏东县| 富阳市| 石阡县| 昌黎县| 新源县| 保山市| 清水县| 页游|