天天看點

vue計算屬性與偵聽器

這篇文章同樣是一篇筆記,如果想學習更詳細的内容,推薦大家去vue官網

<html>
<head>
 <title>vue計算屬性和偵聽器</title>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
 <div id="app">
     <!--沒有使用計算屬性-->
    <p>{{message.split('').reverse().join('')}}</p> <!--模闆内的表達式非常便利,
                                                            但是在模闆中放入太多邏輯會讓模闆過重且難以維護
                                                           對于複雜邏輯,應當使用計算屬性-->
    <!--使用計算屬性-->                                                      
    <p>reversed message:"{{reversedMessage}}"</p>  <!--綁定計算屬性的方式發普通屬性一樣-->                                                     
 </div>
  
  
 <script>
    var vm=new Vue({
        el:'#app',
        data:{
            message:'hello'
        },
        //計算屬性
        computed:{
            //計算屬性的getter
            reversedMessage:function(){
                return this.message.split('').reverse().join('')
            },
             //計算屬性預設隻有getter,需要時我們也可以提供一個setter
            fullName:{
                //getter
                get:function(){
                    return 'hello'
                },
                //setter
                set:function(newValue){
                    //操作資料
                }
            }
        }
    })
    //我們也可以将同一函數定義為一個方法而不是一個計算屬性,兩種方式的最終結果是完全相同的
    //不同的是,計算屬性是基于他們的響應式依賴進行緩存的
    //這意味着隻要message沒有發生改變,多次通路reversedMessage計算屬性會立即傳回之前的計算結果,而不必再次執行函數
    
    //vue提供了一種更通用的方式來觀察和響應vue執行個體上的資料變動:偵聽屬性(watch)
    //但是有的時候使用計算屬性比使用偵聽屬性會更簡潔一些

   //偵聽器(watch):
   //雖然計算屬性在大多數情況下更适合,但是當需要在資料變化時執行異步或者開銷較大的操作時使用watch來響應資料的變化更合适

 </script>
</body>
</html>