轻松掌握Vue 3的ref()和reactive()使用方法

1,138 阅读2分钟

在Vue3的Composition API中,ref()和reactive()是两个相当关键的函数,用于创建并返回一个响应式的数据对象。在实际使用过程中,它们各有便利的使用场景。本篇博客将详述它们的作用、区别及使用场景,并附有详细的代码设计。

1. Vue 3中的ref()

ref()函数被用于创建一个响应式的数据对象。这就表示,一旦这个数据发生变化,任何引用过这个数据的地方都会被重新渲染。

下面是一个使用ref()的代码片段:

import { ref } from 'vue';
export default {
 setup() {
  const count = ref(0);
  const increment = () => { count.value++ };
  return { count, increment };
 }
}

在这个示例中,我们首先从Vue库中引入了ref()函数,然后在setup()函数中,我们用它来创建了一个初始值为0的响应式数据对象count。然后,我们定义了一个增加count值的方法。

注意到,我们需要通过.value来获取或修改包装对象的值,因为ref()为我们的值创建了一个响应式的包装对象。

2. Vue 3中的reactive()

reactive()函数被用来创建一个响应式的数据对象,这个数据对象可以是任何复杂类型,比如对象或数组。

以下是一个使用reactive()的示例:

import { reactive } from 'vue';
export default {
 setup() {
  const state = reactive({count: 0});
  const increment = () => { state.count++ };
  return { state, increment };
 }
}

在此示例中,我们使用reactive()创建了一个响应式的对象state。在更新state的count属性时,我们不需要使用.value。

3. ref()与reactive()的区别

尽管ref()和reactive()都是用来创建响应式对象的,但是它们还是有一些关键的区别:ref()创建的是一个响应式的包装对象,我们需要通过.value来获取或修改其值;而reactive()创建的响应式对象则不需要其外部引用。

4. 使用场景

简单来说,当你需要响应式的数据是原始类型(如:string,number)时候,可以使用ref()。当你的数据是一个对象或者是数组时,你可以选择使用reactive()。

每个函数都有其适用的场景,您可以根据您的具体需求来选择使用哪一个。希望这篇文章能够帮助你更深入地理解Vue3中的ref()和reactive()。

总的来说,ref()和reactive()给予我们更加灵活和强大的控制Vue的能力,使我们能够以更加高效、维护的方式来构建我们的应用。