在 Vue.js 3.0 中,你可以使用 computed 和 watch 来处理计算属性和侦听器,类似于 Vue.js 2.x 的用法。以下是 Vue 3.0 中计算属性和侦听器的基本使用:

计算属性(Computed Properties):

计算属性是基于响应式数据计算而来的属性,它们会缓存计算结果,只有在依赖的响应式数据发生变化时才重新计算。在 Vue.js 3.0 中,使用 computed 函数来定义计算属性。
<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
};
</script>

侦听器(Watchers):

侦听器允许你在响应式数据变化时执行自定义的异步操作。在 Vue.js 3.0 中,使用 watch 函数来设置侦听器。
<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      userInput: ''
    };
  },
  watch: {
    userInput(newValue, oldValue) {
      console.log('Input changed:', newValue);
      this.message = 'Input changed: ' + newValue;
    }
  }
};
</script>

侦听多个属性:

你可以使用数组或对象形式来侦听多个属性。
<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  watch: {
    firstName: {
      handler(newValue, oldValue) {
        console.log('First name changed:', newValue);
        // Do something...
      },
      immediate: true // 立即执行一次
    },
    lastName(newValue, oldValue) {
      console.log('Last name changed:', newValue);
      // Do something...
    }
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
};
</script>

在上述示例中,watch 侦听了 firstName 和 lastName 两个属性的变化,并执行了相应的操作。immediate: true 选项表示在组件初始化时立即执行一次侦听器。

使用计算属性和侦听器能够使你更灵活地处理响应式数据的变化,并执行相应的逻辑。在编写组件时,选择使用计算属性还是侦听器,取决于你的具体需求。


转载请注明出处:http://www.zyzy.cn/article/detail/484/Vue 3.0