10. 9. Vue 計算屬性的setter和getter
阿新 • • 發佈:2021-06-29
之前寫的計算屬性是這樣的:
<div id="app"> <p>計算屬性返回的值:{{text}}</p> </div> <script> const app = new Vue({ el:"#app", computed:{ text:function (){ return "Hello BiHu!" } } }) </script>
因為之前也說過 計算屬性裡面的命名不要加set 或 set 動詞:
其實我們以前寫的都是簡寫,完全模式如下:
computed 它的值是一個物件,所以呢 其實每一個 計算屬性的值都有set 和 get 方法【這就是為什麼不用加括號的原因,因為呼叫的是一個物件】,只是呢,預設Vue都是呼叫他的get方法 ,
所以呢一般我們寫的那些匿名函式也將會歸類於get 方法 ,一般set方法都不寫,下面程式碼是完全模式的計算屬性寫法:
<script> const app = new Vue({ el: "#app", data: { hello:"歡迎", name:"BiHu", }, computed: { //computed的值: 【是一個物件】,每一個都有set 和 get 方法: text: { //set方法 set(name) { this.name = name; }, //get方法 get() { return this.hello + " - " + this.name; }, } } }) </script>
執行結果:
計算屬性返回的值:歡迎 - BiHu
所以呢 Vue每次預設都是呼叫的是 get 方法 ,每次都是哦,那麼怎麼觸發set方法呢? 用響應式的那種修改text即可,比如:
app.text = "a";
所以呢 a 會當做set方法的形式引數傳入,然後修改data中 name 的值為 a,就會打列印如下:
計算屬性返回的值:歡迎 - a
快取也是如此 只有修改了 程式碼才會更新,上篇講過,
希望大家懂得 呼叫計算屬性 其實是呼叫一個物件,物件裡面兩個方法 一個是 set 一個是get