一,前言
1.ref 和reactive 是vue3 基于组合式api 模式下,在setup 中用于声明的具有响应式的数据的方法。
二,ref
1.ref 用于声明基础类型响应式数据。
import {ref} from 'vue'
const age =ref(10)
2.ref 返回的是被包装过的响应式对象,在setup 中访问和修改ref 需要使用.value 属性
age.value=21
3.在模板中使用时无需使用.value ,直接使用即可
<div>{{age}}</div>
4.当ref 数据作为props 传递给子组件的时候,在子组件里需要使用toRef 或者toRefs 建立引用,否则数据不是响应式的。且需要注意,如果在子组件中直接操作了这个引用之后,则和父组件不在具有联系。
三,reactive
1.reactive 用于声明复杂类型响应式数据。
import {reactive} from 'vue'
const man=ref({name:'jolin',age:21})
2.reactive 返回的是被包装过的响应式对象,在setup 中访问和修改直接使用属性即可
man.age=20
3.声明时未定义,动态添加的属性也会是响应式的
man.weight = '50kg'
4.在模板中使用属性的形式
<div>{{man.name}}</div>
5.将reactive 声明的响应式数据传递给子组件时,在子组件可以直接使用。
四,注意事项
1.注意当ref 用于在模板中作为真值判断时,直接使用ref 恒为true , 需要使用.value 才能正确显示
<div v-if="age"></div>
<div v-if="age.value"></div>
2.注意不能解构reactive 数据,解构出的数据会失去响应式。
3.在任何地方访问响应式数据都能拿到最新的。
|