vue3.0中如何理解 ref、toref 和 torefs

469 阅读1分钟

在 Vue.js 3.0 中,有一些新的响应式 API 供我们使用,其中包括 reftoReftoRefs。让我们分别来看看这些概念的含义和使用方法:

  1. ref

ref 是 Vue.js 3.0 的一个新的响应式引用 API,它用于创建一个响应式的数据对象。在组件中,你可以使用 ref 创建一个响应式数据对象,并在模板中使用它。当你改变这个响应式数据对象的值时,Vue.js 将自动更新视图。

例如:

import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0); // 创建一个初始值为0的响应式数据对象

    return {
      count
    };
  }
};

在模板中,你可以像下面这样使用 count

<template>
  <button @click="count++">{{ count }}</button>
</template>
  1. toRef

toRef 是 Vue.js 3.0 的另一个新的响应式引用 API,它用于创建一个响应式的数据对象,这个数据对象指向一个对象的属性。当原对象或属性的值发生变化时,响应式数据对象也会相应地更新。

例如:

import { reactive, toRef } from 'vue';

export default {
  setup() {
    const state = reactive({
      count: 0
    });

    const count = toRef(state, 'count');

    return {
      count
    };
  }
};

在这个例子中,countstate 对象的 count 属性的一个响应式引用。

  1. toRefs

toRefs API 和 toRef 类似,但 toRefs 可以一次性地将一个响应式对象的所有属性都转化为响应式引用。

例如:

import { reactive, toRefs } from 'vue';

export default {
  setup() {
    const state = reactive({
      count: 0,
      text: 'hello'
    });

    return {
      ...toRefs(state)
    };
  }
};

在这个例子中,...toRefs(state) 会将 state 对象的所有属性(即 counttext)都转化为响应式引用。这样,你就可以在模板中直接使用 counttext,而无需通过 state.countstate.text 这种形式。