LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Vue3 Computed

Vue3 computed

computed 接收一个回调函数,返回一个通过其他属性经过计算的新值
并且这个新值是通过 ref 包装过的常量

在Vue3中基本使用如下:

setup() {
  const { computed, ref } = Vue;
  const name = ref(0)

  const newName = computed(() => {
     return name.value + 5     // 注意 ref 包装过的值在value中
  })

  return { newName }
}

也可以进行复杂计算

computed 也可以接收一个对象,这个对象可以接收 get 和 set 两个方法

setup() {
  const { computed, ref } = Vue;
  const name = ref(0)

  const newName = computed({
    get: () => {   // 3. 当 name 的值被修改后,触发 get 方法
      return name.value + 10  // 95 + 10 = 105,所以newName 的值是 105
    },
    set: ( param ) => {  // 2. 下方定时器中赋值的 100 ,会作为参数传递到 set 方法 ,
      name.value = param - 5  //   name.value 被修改 100 - 5 = 95 ,所以 name 的值是95
    },
  })

  setTimeout(() => {
    newName.value = 100
   },3000)  // 1. 三秒后给 newName 赋值

  return { newName } // 所有代码执行完毕之后 newName 的值是 105
}

上诉代码功能为三秒后给newName赋值,定时器中赋值的100,会作为参数传递到set方法,当name的值被修改后,触发get方法,最后的newName的值为105

img_show