[30天 Vue学好学满 DAY6] 计算属性(Computed)

计算属性(Computed)

无传入值
具回传值(return)
对来源属性进行操作-> 触发
即使来源变数无实际异动(true -> true),也进行触发

实作

定义变数count

data() {
    return {
      count: 0,
    };
 },

定义方法: 按下按钮 count + 1

methods: {
    addValue: function () {
        this.count += 1;
    },
},

定义计算属性

computed: {
    lessThenTen() {
      console.log('run lessThenTen')
      return this.count < 10;
    },
    greaterThenTen() {
      console.log("run greaterThenTen")
      return this.lessThenTen ? "" : "greaterThenTen!";
    },
},

执行测试:初始时计算属性各进行一次
https://ithelp.ithome.com.tw/upload/images/20210905/201295368A56AFCpA0.png

计数器:9 & 计算属性:触发10次
https://ithelp.ithome.com.tw/upload/images/20210905/20129536xgZQaTblrB.png

计数器:10,显示。
https://ithelp.ithome.com.tw/upload/images/20210905/20129536Tm9aMbNqQa.png


Getter and Setter 写法

默认只有Getter,需要时可进行 Setter 定义
get:所依赖变数异动时执行,return新结果。
set:将异动结果传入set里。并进行处理。(无相关变数无法进行操作且无效)

HTML

<button @click="switchValue">switch</button>
<h3>{{ text  }}</h3>
<h3>{{ valueA  }}</h3>
<h3>{{ valueB  }}</h3>

Data 定义初始值

data() {
    return {
      text: "text",
      valueA: "valueA",
      valueB: "valueB"
    };
},

定义方法:按下按钮调整valueA、valueB

switchValue: function () {
    this.valueA = "valueA_click";
    this.valueB = "valueB_click";
},

计算属性

value: {
    // getter
    get: function () {
        return this.valueA + " " + this.valueB;
    },
    // setter
    set: function (newValue) {
        var values = newValue.split(" ");
        this.text = values[0]; // text与依赖值无关、无效
        this.valueA = values[0];
        this.valueB = values[1] + "test"; // test与传入值无关、无效
    },
},

测试结果
https://ithelp.ithome.com.tw/upload/images/20210905/20129536ffr7jSBIZo.png

count = 10,less then 10 & greater than 10 逻辑问题就别管了吧
/images/emoticon/emoticon01.gif
本来想一起写watch的,但还是明天吧?


有错误请不吝指教!

参考资料
https://cn.vuejs.org/v2/guide/computed.html
https://peterhpchen.github.io/VuejsQuest/
感谢各路大神/images/emoticon/emoticon34.gif


<<:  Day 6. Hashicorp Nomad: Submit a Job

>>:  [Day06] 用 .NET 实做简单的 RESTful API

33岁转职者的前端笔记-DAY 30 终点也是起点

终於来到第30天了!!! 没想到自已可以连续发文30天 要一边上班一边写文章真的不容易呢 尤其是刚到...

【Day 12】Python os._exit()和 sys.exit()

Python的程序有2种退出方式:os._exit(), sys.exit() os._exit()...

Day 12 : 套件是甚麽,可以吃吗(

今天终於脱离了比较痛苦(?)的python基础语法教学,开始进入python中不可或缺的一环-套件。...

[PHP][Laravel][Blade]利用asset()设定JS及CSS来源档案却无法使用?先看看...

我的档案来源是table_search.js,原本预设是放在resource资料夹中。 我将tab...

Day 21 : 模型优化 - 剪枝 Pruning

如果说可以让模型缩小10倍,精度还维持水准,这是什麽巫术? 延续 Day 20 的模型优化作法,本...