vue3的ref和reactive及toRefs
ref
- ref 是refImpl的实例对象
- 可以定义基本数据类型和引用类型,需要通过.value取值
reactive
- reactive 是Proxy的实例对象
- 定义引用类型
- 定义的变量不能整体更新,会失去响应式;使用Object.assign()方法更新,不会破坏响应式
toRef()和toRefs()
reactive定义的对象解构赋值,会失去响应式;需要使用toRefs()包裹,解构的结果都会是一个ref响应式数据。
let Person = reactive({ name: 'John', age: 19 })
function changeName() {
let { name, age } = toRefs(Person)
let temp = toRef(Person,"name") // temp就是一个ref响应式对象
name.value = 'Jack'
age.value = 20
}