首页IT科技vueref详解(记录–vue3中的ref,toRef,toRefs)

vueref详解(记录–vue3中的ref,toRef,toRefs)

时间2025-06-14 04:47:29分类IT科技浏览4248
导读:这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助...

这里给大家分享我在网上总结出来的一些知识            ,希望对大家有所帮助

1. ref的使用

ref 接受一个原始值                  ,返回一个具有响应式的对象      ,对象有一个value属性         ,其值就是所传递的原始值            。

ref是做的一个拷贝关系                  ,修改对象msg的值         ,不会影响对象obj      ,视图会发生变化                  。

如果给dom上加ref 就是当前的dom元素

<template> <div class="home-new"> <div ref="target"> </div> </div> </template> import {ref} from vue export default { name: "HomeNew", setup(p, { emit }) { const target = ref(null); // 懒加载 console.log(target); return { target, }; }, };

2. toRef的使用

toRef用来给抽离响应式对象中的某一个属性                  ,并把该属性包裹成ref对象            ,使其和原对象产生链接

toRef是做的一种引用关系   ,修改msg2的值                  ,会影响对象msg               ,但视图不会发生变化

setup(){ let msg = { name: zs, age: 16 } let msg2 = toRef(msg, name) console.log(msg2.value) // zs function change2() { msg2.value = ww console.log(msg, msg2.value) // {name: "ww", age: 16} ww //此时 msg.ww 数据变了 但是视图上的是不会变的 } change2() return { msg2,change2 } }

3. toRefs的使用

toRefs用来把响应式对象转换成普通对象,把对象中的每一个属性               ,包裹成ref对象

toRefs就是toRef的升级版                  ,只是toRefs是把响应式对象进行转换   ,其余的特性和toRef无二

setup(){ let msg = { name: zs, age: 16 } let msg3 = toRefs(msg) console.log(msg) // { name:ref, age:ref } ref代指ref对象 function change3() { msg3.name.value = zl msg3.age.value = 20 console.log(msg, msg3) // {name: "zl", age: 20} { name:ref, age:ref } } change3() return { msg3, change3 } }

请求过来的数据封装了一下

<script> import { reactive, toRefs } from "vue"; import { getBanner } from "@/api"; export default { setup() { return { ...toRefs(getBan()), }; }, }; function getBan() { let bannerList = reactive({ list: [],// 模板中直接 写入 list 就可以了 }); getBanner().then((res) => { bannerList.list = res.data; console.log(bannerList.list); }); return bannerList; } </script>

这样写模板中直接写入 {{ list }} 就可以了             , 不用 {{ obj.list }}                  ,修改数据的时候还是obj.list = aaa

import { reactive, toRefs } from "vue"; setup() { let obj = reactive({ list: [], newS: [], moods: [], }); return { ...toRefs(obj) }; },

4.总结

ref            、toRef                  、toRefs 都可以将某个对象中的属性变成响应式数据

ref的本质是拷贝      ,修改响应式数据         ,不会影响到原始数据                  ,视图会更新

toRef      、toRefs的本质是引用         ,修改响应式数据      ,会影响到原始数据                  ,视图不会更新

toRef 一次仅能设置一个数据            ,接收两个参数   ,第一个参数是哪个对象                  ,第二个参数是对象的哪个属性

toRefs接收一个对象作为参数               ,它会遍历对象身上的所有属性,然后挨个调用toRef执行

本文转载于:

https://blog.csdn.net/qq_54753561/article/details/121351993

如果对您有所帮助               ,欢迎您点个关注                  ,我会定时更新技术文档   ,大家一起讨论学习            ,一起进步      。

声明:本站所有文章                  ,如无特殊说明或标注      ,均为本站原创发布         。任何个人或组织         ,在未征得本站同意时                  ,禁止复制         、盗用                  、采集         、发布本站内容到任何网站      、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益         ,可联系我们进行处理         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站快速排名优化报价(快速SEO排名优化:让你的网站跻身搜索前沿) 小程序传递数据方法(【微信小程序】一文带你了解数据绑定、事件绑定以及事件传参、数据同步)