Vue3基础(九)___computed

简介: 本文介绍了Vue 3中`computed`的两种用法:使用函数和使用对象。通过示例代码展示了如何创建只读的计算属性和可写的计算属性,以及它们在实际开发中的应用。文章还解释了`computed`属性如何依赖其他响应式数据,并在数据变化时更新。

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

目录
相关文章
|
4月前
|
缓存 JavaScript API
在vue中,computed 和 watch 的区别和运用的场景?
在vue中,computed 和 watch 的区别和运用的场景?
63 0
|
4月前
|
缓存 JavaScript
Vue computed详解
computed是Vue中一个计算属性,它可以根据依赖的数据动态计算出一个新的值,并将其缓存起来。computed属性是基于它们的依赖进行缓存的,只有当依赖发生变化时,才会重新计算。 computed属性具有以下特性: • 缓存:computed属性会缓存计算结果,在依赖不变时直接返回缓存值,提高性能。 • 响应式:当依赖发生变化时,computed属性会自动重新计算并更新。 • 依赖追踪:Vue会自动追踪computed属性所依赖的数据,并在其发生变化时触发重新计算。
169 0
|
10月前
|
缓存 JavaScript
vue中computed和watch的区别
vue中computed和watch的区别
|
14小时前
|
JavaScript
Vue3基础(二)___reactive
本文介绍了Vue 3中使用`reactive`函数创建响应式对象的方法,并通过示例代码展示了如何在组件的模板中使用这些响应式数据以及如何通过方法修改它们。文章还比较了`ref`和`reactive`两种创建响应式数据的方式,说明了`ref`底层实际上是`reactive`,并且`ref(0)`相当于`reactive({value:0})`。
6 1
Vue3基础(二)___reactive
|
5天前
|
JavaScript 前端开发
vue学习(15)watch和computed
vue学习(15)watch和computed
17 1
|
19天前
|
缓存 JavaScript API
Vue3— computed的实现原理
【9月更文挑战第5天】Vue3— computed的实现原理
34 10
|
4月前
|
缓存 JavaScript
Vue 中的 computed 和 watch 的区别
Vue 中的 computed 和 watch 的区别
|
缓存 JavaScript
Vue 中 computed 和 watch 的区别
Vue 中 computed 和 watch 的区别
83 0
|
4月前
|
缓存 监控 JavaScript
Vue中的watch和computed有什么区别?
Vue中的watch和computed有什么区别?
38 0
|
10月前
|
缓存 JavaScript 前端开发
Vue computed_watch原理
Vue computed_watch原理
51 0