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

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

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

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

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
win10软件显示乱码怎么办恢复(Win11打开软件出现乱码怎么办? Win11系统出现乱码的解决办法)