日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue深究第一弹:computed与watch的异同

發布時間:2025/3/14 vue 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue深究第一弹:computed与watch的异同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在開發vue的過程中,不斷用到了計算屬性(computed)和觀察者(watch),從邏輯上感覺它們很相似,但是嘗試混用它們的時候,又出現了一些問題,那么它們到底有什么異同呢?

1. computed VS data
問計算屬性與觀察者異同這個問題之前,首先要明確為啥會有計算屬性,即computed vs data。在vue中,數據有時有被處理一下再展示出來的需求,例如:

var vm = new Vue({el: '#example',data: {message: 'Hello',name: 'tomczhang'},computed: {// 計算屬性的 getterreversedMessage: function () {// `this` 指向 vm 實例return this.message.split('').reverse().join('')},getWelcome: function () {return this.message + ' ' + this.name}} })

不管是reversedMessage還是getWelcome方法,單純寫在data中都顯得很不優雅,所以,建立一個computed動態的去處理它們是很有必要的。

2. watch VS data
既然vue中數據和view是雙向綁定的,那當用戶輸入文本的時候,vue就能監聽到視圖進行了變動,并將變動的數據傳遞給我們(具體的變動原理見此)。觀察者就是系統監聽到視圖變動后調用的方法,參數分別是老的值和新的值。我們利用watch就可以改變data值。例如:

var vm = new Vue({el: '#demo',watch: {userInput: function (oldValue, newValue) {this.message = newValue;}} })

當然我們針對例子1中的代碼也可以用觀察者來解決,這也是我寫這篇文章的主因,像這樣:

var vm = new Vue({el: '#example',data: {message: 'Hello',name: 'tomczhang',welcome: ''},watch: {welcome: function () {this.welcome = this.message + ' ' + this.name;}} })

3. computed vs watch
BB了那么多,馬上進入我們的正題。

相同: computed和watch都起到監聽/依賴一個數據,并進行處理的作用
異同:它們其實都是vue對監聽器的實現,只不過computed主要用于對同步數據的簡單處理,watch則主要用于數據輸入時異步操作或者開銷較大的情況。能用computed的時候優先用computed,避免了多個數據影響其中某個數據時多次調用watch的尷尬情況。對于視圖層的改變則優先使用watch。

例如這樣:

var vm = new Vue({el: '#demo',data: {firstName: 'Foo',lastName: 'Bar',fullName: 'Foo Bar'},watch: {firstName: function (val) {this.fullName = val + ' ' + this.lastName},lastName: function (val) {this.fullName = this.firstName + ' ' + val}} })

相應的computed版本

var vm = new Vue({el: '#demo',data: {firstName: 'Foo',lastName: 'Bar'},computed: {fullName: function () {return this.firstName + ' ' + this.lastName}} })

參考:
1)計算屬性和觀察者:https://cn.vuejs.org/v2/guide...

原文地址:https://segmentfault.com/a/1190000012656519

轉載于:https://www.cnblogs.com/lalalagq/p/9960283.html

總結

以上是生活随笔為你收集整理的vue深究第一弹:computed与watch的异同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。