一、ref

1.作用

1.生成值类型(基本类型)响应式数据

2.仅有value属性

用于ref对象中储存值
在模板中使用不用.value,vue编译时会注意

3.可拿到template中的元素

2. 为什么需要value属性

(1)ref是一个对象,用value来储存值
(2)通过.value来实现get和set的响应式
image.png
image.png

二、toRef和toRefs

1.toRef

(1)可以为响应式对象的property创建一个ref对象

解构出来的响应式对象的数据不是响应式的,可通过toRef创建一个ref对象

  1. import {reatcive, toRef} from 'vue'
  2. const state = reactive({
  3. name:'name',
  4. age: 26
  5. })
  6. // 解构出来的响应式对象的数据不是响应式的
  7. let nameRef = toRef(state,'name') // 可通过toRef创建一个ref对象

2.toRefs

(1)将响应式数据转换为普通对象,每个属性为响应式的ref对象

可再setup函数中,直接返回转化后的对象,这样可以直接使用某个属性,不用每次从响应式对象上查询(少写对象名)

3.为什么需要toref和torefs

(1)在不丢失响应式前提,把响应式数据分解出来直接使用
(2)toref和torefs不创造响应式,可以分解响应式

  1. import {reatcive, toRefs} from 'vue'
  2. const state = reactive({
  3. name:'name',
  4. age: 26
  5. })
  6. const stateRefs = toRefs(state)
  7. setup(){
  8. return stateRefs
  9. }

image.png
image.png