亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue中method,computed,watch有什么區別

vue中method,computed,watch有什么區別

森欄 2019-04-08 08:04:58
vue中method,computed,watch有什么區別
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

通俗來講,
computed是在HTML DOM加載后馬上執行的,如賦值;
而methods則必須要有一定的觸發條件才能執行,如點擊事件;
watch呢?它用于觀察Vue實例上的數據變動。對應一個對象,鍵是觀察表達式,值是對應回調。值也可以是方法名,或者是對象,包含選項。
所以他們的執行順序為:默認加載的時候先computed再watch,不執行methods;等觸發某一事件后,則是:先methods再watch。
下面的例子可以做為說明。
computed 屬性 vs watched 屬性:Vue 確實提供了一種更通用的方式來觀察和響應 Vue 實例上的數據變動:watch 屬性。當你有一些數據需要隨著其它數據變動而變動時,你很容易濫用 watch——特別是如果你之前使用過 AngularJS。然而,通常更好的想法是使用 computed 屬性而不是命令式的 watch 回調。

查看完整回答
反對 回復 2019-04-09
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

1、methods是個方法,比如你點擊事件要執行一個方法,這時候就用methods,

2、computed是計算屬性,實時響應的,比如你要根據data里一個值隨時變化做出一些處理,就用computed。

3、舉一個例子幫助理解:

1)<div id="root">;

2) </div>;

3) <script>        var vm = new Vue({            el: '#root',            data:data,            methods:{

4)method_now(){                    return Date.now();} },            

5)computed:{                

6)computed_now: function () {                    return Date.now();}} })

7)</script>

4、控制臺訪問:

1)$vm0.computed_now;

2)1491741921719$vm0.computed_now;

3)1491741921719$vm0.computed_now;

4)1491741921719$vm0.computed_now;

5)1491741921719$vm0.method_now;

6)()1491741949941$vm0.method_now;

7)()1491741950734$vm0.method_now;

8)()1491741951445$vm0.method_now;

9)()1491741952117。

5、methods是方法和原生js沒區別,大多是需要我們主動調用(比如事件)。

6、computed是get 這個get有點特殊,只要觸發所依賴數據的set會自動觸發get。我們只關心get的return set由系統觸發或者依賴的數據觸發,官方說依賴緩存只是為了理解。其實Date.now()這種只是系統不能觸發set,不能觸發set get當然不會通知觀察者。

7、watch 是set 由data觸發,我們可以在set里進行自己的條件封裝。



查看完整回答
反對 回復 2019-04-09
  • 3 回答
  • 0 關注
  • 856 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號