Vue3基础(九)___computed

75 篇文章 17 订阅

computed

computed(函数)

<template >
  <div class="container">
    <p>{{obj.name}}的年龄是{{obj.age}}</p>
    <p>{{obj2.name}}的年龄是{{obj2.age}}</p>
    <p>{{obj.name}}{{obj2.name}}的年龄和为{{computedObj}}</p>
    <button @click="changeAge">惦记我改变{{obj.name}}的年龄</button>
  </div>
</template>
<script>
import { ref, computed } from "vue";
export default {
  setup() {
    let obj = ref({ name: "zjq", age: 18 });
    let obj2 = ref({ name: "zrh", age: 23 });
    let computedObj = computed(() => obj.value.age + obj2.value.age);
    function changeAge() {
        obj.value.age +=1
    }
    return { obj, obj2, computedObj ,changeAge};
  }
};
</script>
<style  scoped>
</style>

在这里插入图片描述
点击按钮后,zjq的年龄+1,他们两个的年龄和+1,达到了我们想要的效果。

并且有一个特点,我们使用computed传递函数的形式返回的computedObj 是只读的数据,我们是修改不了的。

computed(对象)

<template >
  <div class="container">
    <p>{{obj.name}}的年龄是{{obj.age}}</p>
    <p>{{obj2.name}}的年龄是{{obj2.age}}</p>
    <p>{{obj.name}}{{obj2.name}}的年龄和为{{computedObj}}</p>
    <button @click="changeAge">惦记我改变{{obj.name}}的年龄</button>
  </div>
</template>
<script>
import { ref, computed } from "vue";
export default {
  setup() {
    let obj = ref({ name: "zjq", age: 18 });
    let obj2 = ref({ name: "zrh", age: 23 });
    // 使用具有 get 和 set 函数的对象来创建可写的 ref 对象
    const computedObj = computed({
      get: () => obj.value.age + obj2.value.age,  //41  42  65
      set: val => {
        obj.value.age = val - 1;  //42
      }
    });
    function changeAge() {
      obj.value.age++;  //19
      computedObj.value++ ; //43
    }
    return { obj, obj2, computedObj, changeAge };
  }
};
</script>
<style  scoped>
</style>

使用具有 get 和 set 函数的对象来创建可写的 ref 对象;
使用computed(对象)返回的是一个ref响应数据,可以对他的值进行改变,需要.value改变,数据是可以改写的。
默认:
在这里插入图片描述

点击按钮后
在这里插入图片描述
点击按钮后:
1:obj.value.age++; 自加1 =》》》19
触发computed get=》改变年龄之和computedObj 42
2:computedObj.value++ ; 年龄之和自加1=》》》43
触发computed set=》obj.value.age = val - 1; 传入43-1 =42;
3:obj.value.age数值改变,触发computed get=》改变年龄之和computedObj 65

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值