色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Vue中computed和watch有哪些區(qū)別

瀏覽:85日期:2022-10-18 15:36:47
計算屬性computed: 支持緩存,只有依賴數據發(fā)生改變,才會重新進行計算 不支持異步,當computed內有異步操作時無效,無法監(jiān)聽數據的變化 computed 屬性值會默認走緩存,計算屬性是基于它們的響應式依賴進行緩存的,也就是基于data中聲明過或者父組件傳遞的props中的數據通過計算得到的值 如果一個屬性是由其他屬性計算而來的,這個屬性依賴其他屬性,是一個多對一或者一對一,一般用computed 如果computed屬性屬性值是函數,那么默認會走get方法;函數的返回值就是屬性的屬性值;在computed中的,屬性都有一個get和一個set方法,當數據變化時,調用set方法。

var vm = new Vue({ el: ’#app’, data: { message: ’hello’ }, template: ` <div> <p>我是原始值: '{{ message }}'</p> <p>我是計算屬性的值: '{{ computedMessage}}'</p> // computed 在 DOM 里直接使用不需要調用 </div> `, computed: { // 計算屬性的 getter computedMessage: function () { // `this` 指向 vm 實例 return this.message.split(’’).reverse().join(’’) } }})

結果:

我是原始值: 'Hello'我是計算屬性的值: 'olleH'

如果不使用計算屬性,那么 message.split(’’).reverse().join(’’) 就會直接寫到 template 里,那么在模版中放入太多聲明式的邏輯會讓模板本身過重,尤其當在頁面中使用大量復雜的邏輯表達式處理數據時,會對頁面的可維護性造成很大的影響

而且計算屬性如果依賴不變的話,它就會變成緩存,computed 的值就不會重新計算

所以,如果數據要通過復雜邏輯來得出結果,那么就推薦使用計算屬性

偵聽屬性watch 不支持緩存,數據變,直接會觸發(fā)相應的操作。 watch支持異步;監(jiān)聽的函數接收兩個參數,第一個參數是最新的值;第二個參數是輸入之前的值; 當一個屬性發(fā)生變化時,需要執(zhí)行對應的操作;一對多; 監(jiān)聽數據必須是data中聲明過或者父組件傳遞過來的props中的數據,當數據變化時,觸發(fā)其他操作,函數有兩個參數:

new Vue({ data: { n: 0, obj: { a: 'a' } }, template: ` <div> <button @click='n += 1'>n+1</button> <button @click='obj.a += ’hi’'>obj.a + ’hi’</button> <button @click='obj = {a:’a’}'>obj = 新對象</button> </div> `, watch: { n() { console.log('n 變了'); }, obj:{ handler: function (val, oldVal) { console.log('obj 變了') }, deep: true // 該屬性設定在任何被偵聽的對象的 property 改變時都要執(zhí)行 handler 的回調,不論其被嵌套多深 }, 'obj.a':{ handler: function (val, oldVal) { console.log('obj.a 變了') }, immediate: true // 該屬性設定該回調將會在偵聽開始之后被立即調用 } }}).$mount('#app');

不應該使用箭頭函數來定義 watcher 函數,因為箭頭函數沒有 this,它的 this 會繼承它的父級函數,但是它的父級函數是 window,導致箭頭函數的 this 指向 window,而不是 Vue 實例

deep 控制是否要看這個對象里面的屬性變化 immediate 控制是否在第一次渲染是執(zhí)行這個函數

vm.$watch() 的用法和 watch 回調類似

vm.$watch(’data屬性名’, fn, {deep: .., immediate: ..})

vm.$watch('n', function(val, newVal){ console.log('n 變了');},{deep: true, immediate: true})總結 如果一個數據需要經過復雜計算就用 computed 如果一個數據需要被監(jiān)聽并且對數據做一些操作就用 watch

以上就是Vue中computed和watch有哪些區(qū)別的詳細內容,更多關于Vue中computed和watch的區(qū)別的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 日本三级视频在线 | 成人亚洲视频在线观看 | 日韩毛片免费线上观看 | 亚洲高清国产一线久久 | 在线a亚洲视频播放在线观看 | 日本在线看小视频网址 | 欧美一区二区高清 | 国产成人一区二区三中文 | 国产成人久久精品区一区二区 | 国产亚洲精品久久久久久久网站 | 韩国巨胸女三级视频网 | 538在线视频二三区视视频 | 成人a毛片高清视频 | 极品精品国产超清自在线观看 | 美女视频大全视频a免费九 美女视频大全网站免费 | 加勒比一本大道香蕉在线视频 | 国产在线一二三区 | 欧美午夜不卡在线观看最新 | 久久亚洲精品中文字幕二区 | 青青爽国产手机在线观看免费 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 99re免费99re在线视频手机版 | 成人精品视频一区二区在线 | 免费a一毛片 | 亚洲国产剧情在线精品视 | 国产精品日韩欧美一区二区三区 | 免费视频亚洲 | 在线视频自拍 | 免费午夜扒丝袜www在线看 | 亚洲欧洲日产v特级毛片 | 亚洲免费高清视频 | 欧美a在线看 | 国产精品一区二区手机在线观看 | 成人看片在线观看免费 | 国产精品夫妇久久 | 国产成人综合久久精品红 | 欧美国产综合日韩一区二区 | 免费观看欧美精品成人毛片 | 欧美一级久久久久久久大 | 怡红院视频在线 |