适用范围:
1. 不适用的场景:
- 对 对象、数组和
Map、Set这样的集合类型 无效 - 解决方案:
2. 数组作为一个Vue 响应式引用
- 当数组增删元素时引发响应式 3. 每个数组元素都是响应式变量
- 当数组修改元素深层内容的时候,使用该元素的页面也响应式变更
- 对
string、number和boolean这样的 原始类型 无效
梗概:
将一个对象转换为响应式对象
- 属于引用值, 功能等同于ref返回的响应式引用
实例:
1. 将任意对象都转换为响应式对象:
import { reactive } from 'vue'
interface Obj {
name1: number,
name2: number,
name3: {
name31: number,
}
}
let obj:Obj=reactive({//会自动做类型推断,这里是显示标注类型
name1: 0,
name2: 666,
name3: {
name31: 888,
}
})
obj.name3.name31++;
console.log(obj.name3.name31);//8892. 自动解包对象中的响应式引用:
2.1. 之一:
const count = ref(1)
const obj = reactive({ count })
// ref 会被解包
console.log(obj.count === count.value) // true
// 它会更新 `obj.count`
count.value++
console.log(count.value) // 2
console.log(obj.count) // 2
// 它也会更新 `count` ref
obj.count++
console.log(obj.count) // 3
console.log(count.value) // 32.2. 之一:
const count = ref(1)
const obj = reactive({})
obj.count = count
console.log(obj.count) // 1
console.log(obj.count === count.value) // true