在 Vue 3.0 中,计算属性和侦听器仍然是构建响应式应用程序的重要工具。下面我们来深入了解 Vue 3.0 中的计算属性和侦听器的使用。

计算属性

计算属性是一个基于响应式依赖进行缓存的属性。当计算属性依赖的响应式依赖发生变化时,计算属性会重新计算,但只在需要时才重新计算。
<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
import { reactive, computed } from 'vue';

export default {
  setup() {
    const state = reactive({
      firstName: 'John',
      lastName: 'Doe'
    });

    const fullName = computed(() => {
      return `${state.firstName} ${state.lastName}`;
    });

    return {
      state,
      fullName
    };
  }
};
</script>

在上述例子中,fullName 是一个计算属性,它依赖于 state.firstName 和 state.lastName。当其中任何一个发生变化时,fullName 会重新计算。

侦听器

侦听器允许你在响应式数据发生变化时执行自定义的操作。你可以侦听一个或多个响应式对象的变化,并在变化时执行一些逻辑。
<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
import { reactive, watch } from 'vue';

export default {
  setup() {
    const state = reactive({
      firstName: 'John',
      lastName: 'Doe'
    });

    let fullName = '';

    watch(
      () => state.firstName + ' ' + state.lastName,
      (newFullName) => {
        fullName = newFullName;
      }
    );

    return {
      state,
      fullName
    };
  }
};
</script>

在上述例子中,我们使用 watch 函数侦听 state.firstName 和 state.lastName 的变化,当它们变化时,执行回调函数更新 fullName。

watchEffect

watchEffect 是 Vue 3.0 中新增的函数,它接受一个函数作为参数,该函数内部的响应式数据变化时,自动执行。
<template>
  <div>
    <p>{{ fullName }}</p>
  </div>
</template>

<script>
import { reactive, watchEffect } from 'vue';

export default {
  setup() {
    const state = reactive({
      firstName: 'John',
      lastName: 'Doe'
    });

    let fullName = '';

    watchEffect(() => {
      fullName = `${state.firstName} ${state.lastName}`;
    });

    return {
      state,
      fullName
    };
  }
};
</script>

watchEffect 的回调函数内部会自动追踪响应式数据的变化,无需手动指定依赖。

计算属性、侦听器和 watchEffect 提供了不同的方式来响应数据的变化,并执行相应的逻辑。选择其中一种方式取决于你的需求,以及代码的组织和可读性。


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