(四)vue/composition-api 之 computed/watch

1.  computed 计算属性

<template>
  <div>
    {{ name.value }}{{ helloName.value }}
  </div>
</template>

<script>
import { defineComponent, ref, computed } from '@vue/composition-api'
export default defineComponent({
  setup () {
    let name = ref('')
    // computed 接受一个箭头函数
    let helloName = computed(() => {
      return name.value ? `${name.value}!hello` : ''
    })

    setTimeout(() => {
      name.value = 'zfb'
    }, 2000)

    return {
      helloName,
      name
    }
  },
})
</script>

<style scoped>

</style>

computed 之 set/get

<template>
  <div>
    {{ name.value }}{{ helloName.value }}
  </div>
</template>

<script>
import { defineComponent, ref, computed } from '@vue/composition-api'
export default defineComponent({
  setup () {
    let name = ref('')
    // computed 接受一个对象
    let helloName = computed({
      get: () => {
        return name.value ? `${name.value}!hello` : ''
      },
      // helloName 重新设置值时候触发
      set: (value) => {
        console.log(`helloName new value: ${value}`)
      }
    })

    setTimeout(() => {
      name.value = 'zfb'
      // 触发 computed set
      helloName.value = 'hhh'
    }, 2000)

    return {
      helloName,
      name
    }
  },
})
</script>

<style scoped>

</style>

2. watch 监听

// 监听单参数的变化   
watch(name, (newValue, oldValue) => {
  console.log(newValue, oldValue, '----d')
})
// 监听对象的变化,第一个参数是函数
watch(() => person.age, (newValue, oldValue) => {
  console.log(newValue, oldValue, 'zfb----d')
})
// 监听多个参数的变化 有第三个参数
    watch(
      () => [person.age, name],
      // 数组形式 第一组是 新数值
      // 数组形式 第二组是 旧数值
      ([ageNewValue, nameNewValue], [ageOldValue, nameOldValue]) => {
        console.log(ageNewValue, ageOldValue, 'zfb----age')
        console.log(nameNewValue, nameOldValue, 'zfb----name')
      },
      {
        immediate: true
      }
    )

停止监听:

const stop = watch(
      () => [person.age, name],
      // 数组形式 第一组是 新数值
      // 数组形式 第二组是 旧数值
      ([ageNewValue, nameNewValue], [ageOldValue, nameOldValue]) => {
        console.log(ageNewValue, ageOldValue, 'zfb----age')
        console.log(nameNewValue, nameOldValue, 'zfb----name')
      },
      {
        immediate: true
      }
    )

    
    setTimeout(() => {
      stop()
    }, 2000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中的Composition API是一种新的API,它允许开发者通过逻辑组合的方式来组织他们的Vue组件。与之前的Options API不同,Composition API允许开发者将逻辑代码进行组合,而不是将它们分散在各种生命周期和方法中。这样做可以使代码更加清晰,易于维护和重用。 Composition API的优势包括: 1. 更好的代码组织:Composition API允许开发者按照功能将代码进行组合,使代码更加清晰、易于维护和重用。 2. 更好的类型推断:Composition API可以更好地与TypeScript集成,这意味着开发者可以获得更好的类型推断和代码提示。 3. 更好的逻辑复用:Composition API允许开发者将逻辑代码进行组合并封装成可复用的函数,这样可以更好地复用逻辑代码。 Composition API的用法包括: 1. 使用setup函数:在Vue3中,每个组件都必须有一个setup函数,它是使用Composition API的入口点。 2. 使用ref和reactive:ref和reactive是Composition API中最常用的两个函数。ref用于创建响应式的基本数据类型,而reactive用于创建响应式的对象和数组。 3. 使用computedwatchcomputedwatchComposition API中用于响应式计算和监听数据变化的函数。 4. 使用生命周期钩子函数:在Composition API中,生命周期钩子函数也可以通过onXXX函数来定义,例如beforeMount可以定义为onBeforeMount函数。 总的来说,Composition APIVue3中一个非常有用的新特性,它可以帮助开发者更好地组织和重用代码,提高代码的可读性和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值