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

vue3 computed 和 watch 的差異

這篇具有很好參考價值的文章主要介紹了vue3 computed 和 watch 的差異。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

vue3 computed 和 watch 的差異,1024程序員節(jié)

??博主:鍋蓋噠
??文章核心:vue3 computed 和 watch 的差異

目錄

前言

用法

computed

watch

代碼

理解

高質(zhì)量的使用


Vue.js作為一種現(xiàn)代化的前端框架,提供了豐富的特性來幫助開發(fā)者構(gòu)建高效和響應(yīng)式的用戶界面。在這其中,computedwatch 是兩個非常重要的選項(xiàng),它們都用于處理數(shù)據(jù)的變化,但它們的用法、原理以及適用的場景都有很大的差異。接下來,我們將詳細(xì)介紹這兩者的區(qū)別,以及如何在Vue中高效地使用它們。

前言

在Vue應(yīng)用中,數(shù)據(jù)的響應(yīng)式變化是其核心特性之一。computedwatch 都提供了一種機(jī)制來觀察和響應(yīng)Vue實(shí)例上數(shù)據(jù)的變化。然而,它們的使用方式、原理以及適用的場景都有明顯的差異。computed 通常用于計(jì)算派生狀態(tài),而 watch 更適用于觀察數(shù)據(jù)的變化并執(zhí)行異步操作或較大的計(jì)算。理解它們之間的區(qū)別,可以幫助我們更合理地設(shè)計(jì)我們的應(yīng)用,使其更加高效和易于維護(hù)。

用法

computed

computed 是基于它們的依賴進(jìn)行緩存的。只有在相關(guān)依賴發(fā)生改變時它們才會重新求值。這意味著只要依賴保持不變,多次訪問 computed 屬性將立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。

computed 的常見用法是在模板內(nèi)進(jìn)行復(fù)雜計(jì)算:

new Vue({
  data: {
    a: 1,
    b: 2
  },
  computed: {
    sum: function () {
      return this.a + this.b;
    }
  }
});

在上面的例子中,sum 是一個計(jì)算屬性,依賴于 data 對象中的 ab。只要 ab 改變,sum 就會自動更新。

watch

watch 提供了一種方式,允許我們執(zhí)行異步操作 (訪問一個API,限制執(zhí)行頻率),并在我們觀察的數(shù)據(jù)發(fā)生變化時,執(zhí)行更多的操作。

 
new Vue({
  data: {
    question: '',
    answer: 'Questions usually contain a question mark. ;)'
  },
  watch: {
    // 如果 `question` 發(fā)生改變,這個函數(shù)就會運(yùn)行
    question: function (newQuestion) {
      this.answer = 'Waiting for you to stop typing...'
      this.getAnswer()
    }
  },
  methods: {
    getAnswer: _.debounce(
      function () {
        if (this.question.indexOf('?') === -1) {
          this.answer = 'Questions usually contain a question mark. ;)'
          return
        }
        this.answer = 'Thinking...'
        // 略
      },
      // 這是我們?yōu)橛脩敉V馆斎氲却暮撩霐?shù)
      500
    )
  }
})

在這個例子中,我們使用 watch 選項(xiàng)來觀察 question 數(shù)據(jù)的變化,并執(zhí)行一些異步操作或者較大計(jì)算。

代碼

下面是一個具體的例子,展示了 computedwatch 的用法:

 
<template>
  <div>
    <input v-model="number">
    <p>原始數(shù)字:{{ number }}</p>
    <p>數(shù)字的平方(computed):{{ squaredNumber }}</p>
    <button @click="findSquareRoot">計(jì)算數(shù)字的平方根(watch)</button>
    <p>數(shù)字的平方根(watch):{{ squareRoot }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      number: 0,
      squareRoot: 0
    };
  },
  computed: {
    squaredNumber() {
      return this.number * this.number;
    }
  },
  watch: {
    number(newValue) {
      this.findSquareRoot();
    }
  },
  methods: {
    findSquareRoot() {
      this.squareRoot = Math.sqrt(this.number);
    }
  }
}
</script>

在這個例子中,我們有一個文本輸入框,用戶可以輸入數(shù)字。我們使用 computed 屬性來計(jì)算這個數(shù)字的平方,并使用 watch 來計(jì)算這個數(shù)字的平方根。

理解

computedwatch 的核心區(qū)別在于它們?nèi)绾胃櫼蕾嚭陀|發(fā)更新。

  • computed 更適合用在模板中需要進(jìn)行復(fù)雜計(jì)算的場景,它會緩存計(jì)算結(jié)果,只有當(dāng)其依賴發(fā)生變化時才會重新計(jì)算。這使得 computed 非常高效。

  • watch 則更適用于觀察某個值的變化并執(zhí)行異步操作或開銷較大的操作。它不會緩存結(jié)果,每次觸發(fā)都會執(zhí)行指定的回調(diào)函數(shù)。

高質(zhì)量的使用

為了確保我們高效地使用 computedwatch,我們需要遵循一些最佳實(shí)踐:

  1. 合理選擇:根據(jù)具體場景合理選擇使用 computed 還是 watch。如果你需要基于某個狀態(tài)的派生狀態(tài),使用 computed;如果你需要在某個狀態(tài)變化時執(zhí)行異步或開銷較大的操作,使用 watch。

  2. 避免復(fù)雜的 computed 屬性:雖然 computed 屬性是緩存的,但是不代表你可以在 computed 屬性中執(zhí)行非常復(fù)雜的操作。過于復(fù)雜的 computed 屬性會使得組件的可維護(hù)性變差。

  3. 合理利用 watch 的配置項(xiàng)watch 提供了一些配置項(xiàng),比如 deepimmediate。deep 允許你在觀察對象時深度觀察其內(nèi)部的變化,而 immediate 允許你在添加觀察者時立即觸發(fā)回調(diào)。

通過遵循這些最佳實(shí)踐,我們可以確保我們的Vue應(yīng)用運(yùn)行得更加順暢,并且更易于維護(hù)。

vue3 computed 和 watch 的差異,1024程序員節(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-719986.html

到了這里,關(guān)于vue3 computed 和 watch 的差異的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 解決github ping不通的問題(1024程序員節(jié)快樂!

    1024程序員節(jié)快樂?。?隨便粘貼一個文檔,參加活動 域名解析(域名-IP):https://www.ipaddress.com/ Ubuntu平臺 github經(jīng)常ping不通或者訪問緩慢,方法是更改hosts文件 在hosts里添加github的ip 140.82.114.4 www.github.com 199.232.5.194 github.global.ssl.fastly.net 54.231.114.219 github-cloud.s3.amazonaws.com 可以訪

    2024年01月18日
    瀏覽(35)
  • 1024程序員節(jié)特輯:【Spring Boot自動配置原理揭秘】

    1024程序員節(jié)特輯:【Spring Boot自動配置原理揭秘】

    主頁傳送門:?? 傳送 ??Spring Boot 是一個用于創(chuàng)建獨(dú)立的、生產(chǎn)級別的 Spring 應(yīng)用程序的框架。它極大地簡化了 Spring 應(yīng)用程序的開發(fā)過程,其中一個關(guān)鍵的功能就是自動配置(Auto-Configuration)。 ??自動配置可以根據(jù)項(xiàng)目需求自動配置各種服務(wù)和組件,它可以幫助開發(fā)者

    2024年02月08日
    瀏覽(36)
  • 好用且免費(fèi)的CodeWhisperer,給1024程序員節(jié)送禮來了

    好用且免費(fèi)的CodeWhisperer,給1024程序員節(jié)送禮來了

    ? ? ? 國慶期間沒有膽量去人從眾的景點(diǎn),關(guān)在家里刷手機(jī)時意外在亞馬遜的User Group公眾號上發(fā)現(xiàn)了CodeWhisperer這么個好東西(bu yao qian),以后擼代碼也可以提高生產(chǎn)力(fang yang mo yu)了,這還不趕緊上手試一下??垂俜浇榻B說它支持流行的IDE開發(fā)工具,包括VS Code、Intelli

    2024年02月08日
    瀏覽(31)
  • Vue3的computed計(jì)算屬性和watch監(jiān)視(四)

    Vue3的computed計(jì)算屬性和watch監(jiān)視(四)

    監(jiān)視【ref】定義的【基本數(shù)據(jù)】類型 監(jiān)視【ref】定義的【對象類型】數(shù)據(jù) 監(jiān)視【reactive】定義的【對象類型】數(shù)據(jù) ?與 場景二 不同的是,newVal和oldVal是一樣的,表明通過Object.assign重新賦值的時候,并不是生成一個新的對象,而是新的值覆蓋了舊值 監(jiān)視【ref】或者【reactiv

    2024年02月21日
    瀏覽(23)
  • 黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(八)登錄頁面

    黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(八)登錄頁面

    登錄頁面的主要功能就是表單校驗(yàn)和登錄登出業(yè)務(wù)。 account password cdshi0080 123456 cdshi0081 123456 cdshi0082 123456 cdshi0083 123456 cdshi0084 123456 cdshi0085 123456 cdshi0086 123456 cdshi0087 123456 cdshi0088 123456 模版代碼 在 srcviewsLoginindex.vue 中添加登錄頁代碼: 配置路由跳轉(zhuǎn) 修改 srcviewsLayoutcompon

    2024年02月10日
    瀏覽(25)
  • 黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(七)詳情頁

    黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(七)詳情頁

    模板代碼 創(chuàng)建 srcviewsDetailindex.vue 文件,添加以下代碼: 配置路由 在 srcrouterindex.js 中添加對應(yīng)路由【 /detail/{goodId} 】: 鏈接跳轉(zhuǎn) 對 srcviewsHomecomponentsHomeNew.vue 文件及其他涉及商品信息的頁面修改路由跳轉(zhuǎn): 封裝接口 在 srcapisdetail.js 文件中封裝接口用于獲取商品信息

    2024年02月10日
    瀏覽(28)
  • 1024程序員節(jié)帶你玩轉(zhuǎn)圖片Exif信息獲取之JavaScript

    1024程序員節(jié)帶你玩轉(zhuǎn)圖片Exif信息獲取之JavaScript

    目錄 一、前言 二、背景 三、Exif.js ? ? ? ? ?1、Exif.js 簡介 2、Exif.js 引入 四、多場景展示數(shù)據(jù)獲取 1、原始圖片直接獲取 ?2、base64 編碼文件加載 ?3、文件上傳的方式加載 ?五、總結(jié) ? ? ? ?1024是2的十次方,二進(jìn)制計(jì)數(shù)的基本計(jì)量單位之一。1G=1024M,而1G與1級諧音,也有一

    2024年02月20日
    瀏覽(98)
  • 黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(一)初始化項(xiàng)目

    黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(一)初始化項(xiàng)目

    Vue3是Vue.js最新的主要版本,它已經(jīng)于2020年9月18日發(fā)布。它提供了許多新功能和性能改進(jìn),這些改進(jìn)使得Vue更易于使用和更具可擴(kuò)展性。 以下是Vue3的一些主要特性: 更快的渲染:Vue3使用重寫的響應(yīng)式系統(tǒng),它使用Proxy對象來解決Vue2中的性能瓶頸問題。這使得Vue3的渲染速度比

    2024年02月15日
    瀏覽(41)
  • 黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(二)初始化項(xiàng)目

    黑馬程序員前端 Vue3 小兔鮮電商項(xiàng)目——(二)初始化項(xiàng)目

    Vue3是Vue.js最新的主要版本,它已經(jīng)于2020年9月18日發(fā)布。它提供了許多新功能和性能改進(jìn),這些改進(jìn)使得Vue更易于使用和更具可擴(kuò)展性。 以下是Vue3的一些主要特性: 更快的渲染:Vue3使用重寫的響應(yīng)式系統(tǒng),它使用Proxy對象來解決Vue2中的性能瓶頸問題。這使得Vue3的渲染速度比

    2024年02月11日
    瀏覽(57)
  • 1024程序員節(jié)特輯 | Spring Boot實(shí)戰(zhàn) 之 MongoDB分片或復(fù)制集操作

    1024程序員節(jié)特輯 | Spring Boot實(shí)戰(zhàn) 之 MongoDB分片或復(fù)制集操作

    Spring實(shí)戰(zhàn)系列文章: Spring實(shí)戰(zhàn) | Spring AOP核心秘笈之葵花寶典 Spring實(shí)戰(zhàn) | Spring IOC不能說的秘密? 國慶中秋特輯系列文章: 國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA 國慶中秋特輯(七)Java軟件工程師常見20道編程面試題 國慶中秋特輯(六)大學(xué)生常見30道寶藏編程面試題

    2024年02月08日
    瀏覽(44)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包