国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue——偵聽器

這篇具有很好參考價值的文章主要介紹了Vue——偵聽器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

基本示例?

深層偵聽器?

即時回調(diào)的偵聽器?

回調(diào)的觸發(fā)時機?

this.$watch()?

停止偵聽器?


基本示例?

? ? ? ?計算屬性允許我們聲明性地計算衍生值。然而在有些情況下,我們需要在狀態(tài)變化時執(zhí)行一些“副作用”:例如更改 DOM,或是根據(jù)異步操作的結(jié)果去修改另一處的狀態(tài)。

在選項式 API 中,我們可以使用watch 選項在每次響應(yīng)式屬性發(fā)生變化時觸發(fā)一個函數(shù)。

export default {
  data() {
    return {
      question: '',
      answer: 'Questions usually contain a question mark. ;-)'
    }
  },
  watch: {
    // 每當(dāng) question 改變時,這個函數(shù)就會執(zhí)行
    question(newQuestion, oldQuestion) {
      if (newQuestion.includes('?')) {
        this.getAnswer()
      }
    }
  },
  methods: {
    async getAnswer() {
      this.answer = 'Thinking...'
      try {
        const res = await fetch('https://yesno.wtf/api')
        this.answer = (await res.json()).answer
      } catch (error) {
        this.answer = 'Error! Could not reach the API. ' + error
      }
    }
  }
}
<p>
  Ask a yes/no question:
  <input v-model="question" />
</p>
<p>{{ answer }}</p>

watch?選項也支持把鍵設(shè)置成用?.?分隔的路徑:

export default {
  watch: {
    // 注意:只能是簡單的路徑,不支持表達式。
    'some.nested.key'(newValue) {
      // ...
    }
  }
}

深層偵聽器?

? watch?默認(rèn)是淺層的:被偵聽的屬性,僅在被賦新值時,才會觸發(fā)回調(diào)函數(shù)——而嵌套屬性的變化不會觸發(fā)。如果想偵聽所有嵌套的變更,你需要深層偵聽器:

export default {
  watch: {
    someObject: {
      handler(newValue, oldValue) {
        // 注意:在嵌套的變更中,
        // 只要沒有替換對象本身,
        // 那么這里的 `newValue` 和 `oldValue` 相同
      },
      deep: true
    }
  }
}

謹(jǐn)慎使用

深度偵聽需要遍歷被偵聽對象中的所有嵌套的屬性,當(dāng)用于大型數(shù)據(jù)結(jié)構(gòu)時,開銷很大。因此請只在必要時才使用它,并且要留意性能。

即時回調(diào)的偵聽器?

? watch?默認(rèn)是懶執(zhí)行的:僅當(dāng)數(shù)據(jù)源變化時,才會執(zhí)行回調(diào)。但在某些場景中,我們希望在創(chuàng)建偵聽器時,立即執(zhí)行一遍回調(diào)。舉例來說,我們想請求一些初始數(shù)據(jù),然后在相關(guān)狀態(tài)更改時重新請求數(shù)據(jù)。

我們可以用一個對象來聲明偵聽器,這個對象有?handler?方法和?immediate: true?選項,這樣便能強制回調(diào)函數(shù)立即執(zhí)行:

export default {
  // ...
  watch: {
    question: {
      handler(newQuestion) {
        // 在組件實例創(chuàng)建時會立即調(diào)用
      },
      // 強制立即執(zhí)行回調(diào)
      immediate: true
    }
  }
  // ...
}

?回調(diào)函數(shù)的初次執(zhí)行就發(fā)生在?created?鉤子之前。Vue 此時已經(jīng)處理了?data,computed?和?methods?選項,所以這些屬性在第一次調(diào)用時就是可用的。

回調(diào)的觸發(fā)時機?

? ? ? 當(dāng)你更改了響應(yīng)式狀態(tài),它可能會同時觸發(fā) Vue 組件更新和偵聽器回調(diào)。

默認(rèn)情況下,用戶創(chuàng)建的偵聽器回調(diào),都會在 Vue 組件更新之前被調(diào)用。這意味著你在偵聽器回調(diào)中訪問的 DOM 將是被 Vue 更新之前的狀態(tài)。

如果想在偵聽器回調(diào)中能訪問被 Vue 更新之后的 DOM,你需要指明?flush: 'post'?選項:

export default {
  // ...
  watch: {
    key: {
      handler() {},
      flush: 'post'
    }
  }
}

this.$watch()?

我們也可以使用組件實例的$watch() 方法?來命令式地創(chuàng)建一個偵聽器:

export default {
  created() {
    this.$watch('question', (newQuestion) => {
      // ...
    })
  }
}

如果要在特定條件下設(shè)置一個偵聽器,或者只偵聽響應(yīng)用戶交互的內(nèi)容,這方法很有用。它還允許你提前停止該偵聽器。

停止偵聽器?

用?watch?選項或者?$watch()?實例方法聲明的偵聽器,會在宿主組件卸載時自動停止。因此,在大多數(shù)場景下,你無需關(guān)心怎么停止它。

在少數(shù)情況下,你的確需要在組件卸載之前就停止一個偵聽器,這時可以調(diào)用?$watch()?API 返回的函數(shù):文章來源地址http://www.zghlxwxcb.cn/news/detail-412231.html

const unwatch = this.$watch('foo', callback)

// ...當(dāng)該偵聽器不再需要時
unwatch()

到了這里,關(guān)于Vue——偵聽器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【源碼系列#04】Vue3偵聽器原理(Watch)

    專欄分享:vue2源碼專欄,vue3源碼專欄,vue router源碼專欄,玩具項目專欄,硬核??推薦?? 歡迎各位ITer關(guān)注點贊收藏?????? 偵聽一個或多個響應(yīng)式數(shù)據(jù)源,并在數(shù)據(jù)源變化時調(diào)用所給的回調(diào)函數(shù) 第一個參數(shù)可以是不同形式的“數(shù)據(jù)源”:它可以是一個 ref (包括計算屬性

    2024年02月04日
    瀏覽(94)
  • Vue Composition API之偵聽器watch/watchEffect

    Vue Composition API之偵聽器watch/watchEffect

    在日常的開發(fā)中,很多時候我們需要去對一些狀態(tài)進行監(jiān)聽,比如當(dāng)顯示學(xué)生的成績列表時,我們使用一個學(xué)生的學(xué)號student_num作為請求成績的參數(shù),如果沒有監(jiān)聽機制,當(dāng)學(xué)號student_num改變時,我們需要依賴用戶的操作去刷新成績。但是有了偵聽器,我們可以通過偵聽器去監(jiān)

    2024年02月08日
    瀏覽(22)
  • Vue3前端開發(fā),watch數(shù)據(jù)偵聽器的立即執(zhí)行

    Vue3前端開發(fā),watch數(shù)據(jù)偵聽器的立即執(zhí)行

    Vue3前端開發(fā),watch數(shù)據(jù)偵聽器的立即執(zhí)行!實際上,我們可以通過回調(diào)函數(shù)的后面,再追加一個對象,來設(shè)置這個參數(shù),immediate:true.來實現(xiàn)一種立即執(zhí)行的效果。在頁面記載完成后,馬上就會執(zhí)行一次watch. 如上所示,我們在回調(diào)函數(shù)的后面,追加了一個參數(shù),是一個對象類型

    2024年01月18日
    瀏覽(28)
  • 【vue2】計算屬性(computed)與偵聽器(watch)詳解

    【vue2】計算屬性(computed)與偵聽器(watch)詳解

    ??博???????主: 初映CY的前說(前端領(lǐng)域) ??個人信條: 想要變成得到,中間還有做到! ??本文核心: 計算屬性與偵聽屬性的用法 目錄( 文末有給大家準(zhǔn)備好的Xmind思維導(dǎo)圖 ) 一、計算屬性computed ①默認(rèn)get()方法,僅是獲取值 ②不僅僅是獲取值,還具有修改屬性功能

    2024年01月16日
    瀏覽(20)
  • 微信小程序?qū)崿F(xiàn)頁面數(shù)據(jù)偵聽器,類似vue的watch

    既然小程序的組件已經(jīng)有Observer功能,那為什么還要手寫watch功能呢? Observer只能在Component中使用,沒法在Page中使用。若是想在Page中監(jiān)控某一數(shù)據(jù)的變化,Observer做不到。 Observer屬于小程序的新功能,只能在高版本微信使用,低版本微信無法使用。公司的小程序就因為使用了

    2024年02月03日
    瀏覽(27)
  • Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽

    Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽

    Vue3前端開發(fā),watch偵聽器的深度監(jiān)聽和精確監(jiān)聽!今天和大家分享的內(nèi)容是,關(guān)于watch的深度偵聽和精確監(jiān)聽。 首先看一下,第一個案例,練習(xí)的是,深度監(jiān)聽的效果。默認(rèn)是淺的偵聽,是不會觸發(fā)回調(diào)函數(shù)的。 如圖,當(dāng)我們點擊按鈕,修改num值的時候,觸發(fā)了回調(diào)函數(shù),在

    2024年01月23日
    瀏覽(20)
  • GuLi商城-前端基礎(chǔ)Vue-計算屬性computed和偵聽器watch
  • 前端Vue入門-day02-vue指令、computed計算屬性與watch偵聽器

    前端Vue入門-day02-vue指令、computed計算屬性與watch偵聽器

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 指令補充 指令修飾符 v-bind 對于樣式控制的增強? 操作class 案例:京東秒殺 tab 導(dǎo)航高亮 操作style? v-model 應(yīng)用于其他表單元素? computed 計算屬性 基礎(chǔ)語法 computed 計算屬

    2024年02月11日
    瀏覽(53)
  • 淺談在 Vue2 和 Vue3 中計算屬性和偵聽器的一些變化

    淺談在 Vue2 和 Vue3 中計算屬性和偵聽器的一些變化

    計算屬性 computed 和偵聽器 watch 都是 Vue.js 框架中用來響應(yīng)式更新視圖的重要概念。因此無論是在哪個版本,它們都是不可缺少的概念, 這篇文章就不過多詳細介紹計算屬性和偵聽器的概念和理論了 ,接下來主要談?wù)?Vue2 和 Vue3 中計算屬性和偵聽器的語法變化和異同。 計算屬

    2023年04月26日
    瀏覽(31)
  • Vue3 計算屬性和偵聽器實戰(zhàn)(computed、watch)——簡易點餐頁面

    Vue3 計算屬性和偵聽器實戰(zhàn)(computed、watch)——簡易點餐頁面

    這篇文章記錄一下 Vue3 計算屬性和偵聽器 (computed、watch) 實戰(zhàn)的內(nèi)容,這篇文章我們在有計算屬性和偵聽器的基礎(chǔ)上,我們來制作一個簡易點餐頁面,接下來我們一起來從零到一開始制作。 計算屬性和偵聽器相關(guān)文章推薦: 深入與淺談 Vue 中計算屬性和偵聽器的區(qū)別和使用

    2024年02月09日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包