Vue3中toRef,toResfs,toRaw的使用

146 阅读1分钟

介绍toRef

toRef 只能修改响应式对象的数据,当修改非响应式数据时候,属于浅层式的修改,视图是不会有变化,看代码我们知道 namemyname 是小石,点击修改为今天天气36摄氏度,视图是不会发生变化的,但是他确实是修改了,借助 reactive 变成响应式即可,toRef接收两个参数,一个是定义的数据源,一个是属性名,返回一个ref对象

注意的是用 toRef 转换后生成 ref 数据要是引用类型的话,只是一个浅拷贝,会影响到原数据

const name = {myname: '小石',age: 18};
const myname = toRef(name, 'myname')
const change = (() => {
  myname.value = '今天天气36摄氏度';
  console.log(myname);
})

toRef 包裹起来的数据存在层层嵌套的关系的时候,利用 reactive 包裹起来即可,一层层的去平铺,最后转换为响应式的对象

const name = reactive({myname: '小石',age: 18});
const myname = toRef(name, 'myname')

介绍toRefs

toRef和toRefs功能是一样的,但可以批量创建Ref对象;toRefs就是把定义的数据每个都变成toRef,可以通过结构的方式去操作,搭配reactive去使用

介绍toRaw

使用reactive定义的数据他会变成响应式,由Proxy对象包裹;当你想把这种响应式的数据改成原始数据就是非响应式的话,使用toRaw包裹起来使用,就会脱离Proxy

平常开发中,reactive搭配toRefs使用