JavaScript 语言 如何使用Vue 3 computed vs reactive

JavaScript阿木 发布于 2025-06-26 4 次阅读


摘要:

在 Vue 3 中,`computed` 和 `reactive` 是两个用于响应式数据处理的特性,它们在实现数据绑定和自动更新方面起着至关重要的作用。本文将深入探讨这两个特性的用法、区别以及在实际开发中的应用场景。

一、

Vue 3 作为 Vue.js 的最新版本,引入了许多新的特性和改进。其中,`computed` 和 `reactive` 是两个重要的响应式系统特性。它们使得 Vue 的数据绑定和组件更新更加高效和灵活。本文将围绕这两个特性展开,帮助开发者更好地理解和使用它们。

二、computed

`computed` 是 Vue 3 中用于声明式计算属性的特性。它基于它们的依赖进行缓存,只有当依赖发生变化时才会重新计算。这使得 `computed` 属性在性能上优于普通的响应式属性。

1. 基本用法

javascript

<template>


<div>


<p>{{ fullName }}</p>


</div>


</template>

<script>


import { ref, computed } from 'vue';

export default {


setup() {


const firstName = ref('John');


const lastName = ref('Doe');

const fullName = computed(() => {


return `${firstName.value} ${lastName.value}`;


});

return {


fullName


};


}


};


</script>


在上面的例子中,`fullName` 是一个计算属性,它依赖于 `firstName` 和 `lastName`。只有当这两个响应式引用的值发生变化时,`fullName` 才会重新计算。

2. 计算属性的缓存

由于 `computed` 属性是基于它们的依赖进行缓存的,所以只有当依赖发生变化时,计算属性才会重新计算。这提高了性能,尤其是在处理复杂计算时。

3. 计算属性的 getter 和 setter

`computed` 属性可以接受一个 getter 函数和一个可选的 setter 函数。setter 函数在计算属性被赋新值时调用。

javascript

const fullName = computed({


get: () => {


return `${firstName.value} ${lastName.value}`;


},


set: (newValue) => {


const names = newValue.split(' ');


firstName.value = names[0];


lastName.value = names[1];


}


});


三、reactive

`reactive` 是 Vue 3 中用于创建响应式对象的特性。它使得对象内部的所有属性都是响应式的,并且会自动追踪依赖和触发更新。

1. 基本用法

javascript

<template>


<div>


<p>{{ user.name }}</p>


</div>


</template>

<script>


import { reactive } from 'vue';

export default {


setup() {


const user = reactive({


name: 'John Doe',


age: 30


});

return {


user


};


}


};


</script>


在上面的例子中,`user` 是一个响应式对象,它的 `name` 和 `age` 属性都是响应式的。

2. 响应式对象的更新

当响应式对象的属性发生变化时,Vue 会自动追踪这些变化并更新依赖于这些属性的视图。

3. 响应式对象的解构

Vue 3 允许你解构响应式对象,并且解构后的属性仍然是响应式的。

javascript

const { name, age } = user;


四、computed vs reactive

虽然 `computed` 和 `reactive` 都用于响应式数据,但它们的使用场景和目的有所不同。

- `computed` 用于声明式计算属性,它依赖于其他响应式数据,并且具有缓存机制。

- `reactive` 用于创建响应式对象,它使得对象内部的所有属性都是响应式的。

1. 性能

`computed` 属性由于具有缓存机制,通常在处理复杂计算时性能更好。而 `reactive` 对象则适用于需要响应式属性的场景。

2. 使用场景

- 使用 `computed`:当你需要基于其他响应式数据计算新的值时。

- 使用 `reactive`:当你需要创建一个响应式对象,并且对象内部的所有属性都需要是响应式的。

五、结论

在 Vue 3 中,`computed` 和 `reactive` 是两个强大的响应式系统特性。理解它们的使用方法和区别对于开发高效和可维护的 Vue 应用至关重要。通过合理使用这两个特性,你可以构建出更加灵活和高效的组件和数据绑定。

(注:本文为示例性文章,实际字数未达到3000字,可根据实际需求进行扩展。)