在Vue3中,Ref
和Reactive
是两个实现响应式编程的关键的API。
1、区别
Ref
:用于创建一个响应式的基本数据类型,比如数字、字符串等。它将普通的数据变成响应式数据,可以监听数据的变化。使用Ref时,我们可以通过.value
来访问和修改数据的值。
Reactive
:Reactive则用于创建一个响应式对象,可以包含多个属性。通过Reactive,我们可以将整个对象变成响应式,使对象的任何属性发生变化时都能被检测到。
2、ref使用场景
Ref
:适用于管理简单的单一数据,如计数器、输入框的值等。
使用ref实现计数器示例
javascript
<template>
<div>
<p>Count: {{ i }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { ref } from 'vue';
setup(){
const i = ref(0);
const increment = () => {
i.value++;
};
return{
i,increment
}
}
</script>
注意
1、在js中访问/修改需要使用.value
2、在模版中插值不需要使用.value
3、Reactive使用场景
使用Reactive实现管理用户信息和订单示例1
javascript
<template>
<div>
<p>User Name: {{ user.name }}</p>
<p>Age: {{ user.age }}</p>
</div>
</template>
<script>
import { reactive } from 'vue';
setup(){
const user = reactive({
name: 'Alice',
age: 30
});
return{
user
}
}
</script>
使用Reactive实现管理用户信息和订单示例2
javascript
<template>
<div>
<p>User Name: {{ name }}</p>
<p>Age: {{ age }}</p>
</div>
</template>
<script setup>
import { reactive } from 'vue';
setup(){
const user = reactive({
name: 'Alice',
age: 30
});
return{
...toRefs(user)
}
}
</script>
注意,return中是否使用展开运算符的差别