当前位置:首页 > 每日看点 > 正文内容

vue3响应性数组用ref还是reactive呢?

卡卷网12个月前 (01-10)每日看点162

事情是这样的,我和同事在vue3中到底是使用ref还是reactive起了争执。

我觉得应该更好的使用ref,Ref既能声明基本数据类型,也能声明对象和数组,而且不容易失去响应式,reactive作不当容易失去响应式。

而同事认为开发表单或多个值的时候都会优先采用reactive,数据集中,结构明了。

所以结果就是我准备写这篇文章来记录一下这两者的区别和用法。

ref和Reactive的区别

    <>数据类型:
    ref主要用于基本数据类型(如字符串、数字、布尔值等)以及引用数据类型(对象)。使用ref定义的数据可以通过.value属性访问和修改。reactive主要用于将对象转换为响应式数据,包括复杂的嵌套对象和数组。使用reactive定义的数据可以直接访问和修改属性。
    <>访问方式:
    ref通过.value属性访问和修改值。reactive直接访问和修改对象的属性,不需要使用.value
    <>响应性追踪:
    ref追踪单个的引用,即只有当.value属性被访问或修改时才会触发依赖追踪。reactive追踪整个对象及其内部属性,当任何属性被修改时,所有依赖于这些属性的视图都会自动更新。
    <>可变性:
    ref的引用值可以重新赋值,而不会影响其响应性。reactive对象本身是不可重新赋值的,只能修改其内部属性。如果直接重新赋值整个对象,会导致响应性丢失。

ref的使用注意事项

    <>必要性:ref应该只在必要时使用,因为它可能会影响性能。<>内存泄漏:确保在组件销毁时解除对ref的引用,以避免内存泄漏。<>值的可变性:ref的值是可变的,所以要小心地使用它,避免意外地修改其值。

reactive的使用注意事项

    <>重新赋值问题:对于reactive对象,不能直接重新赋值整个对象,否则会失去响应性。应通过修改对象的属性来保持响应性。<>解构赋值问题:解构赋值会导致响应性丢失,因为解构后的新变量不是响应式的。可以使用toRefs函数将响应式对象转换为包含多个ref的对象,以确保每个属性保持响应性。

应用场景和示例代码

ref的应用场景

简单数据:需要单一的基本数据类型,如计数器、开关状态等。 import{ref}from'vue'; constcount=ref(0); functionincrement(){ count.value++; }

    <>模板中解构响应式对象:在组合式API中,如果将响应式对象解构到模板中,ref可以保持解构后的响应性。

import{ref,toRefs}from'vue'; conststate=ref({count:0,name:'Vue'}); constcount=toRefs(state).count; constname=toRefs(state).name;

    <>引用DOM元素:在模板中引用DOM元素时,可以使用ref进行挂载。

<template> <inputref="inputElement"/> <utton@click="focusInput">FocusInput</utton> </template> <scriptsetup> import{ref}from'vue'; constinputElement=ref(null); constfocusInput=()=>{ inputElement.value.focus(); }; </script>

reactive的应用场景

    <>复杂对象和嵌套数据:当需要包含多个属性和嵌套结构的对象时,reactive更加适合。

import{reactive}from'vue'; constuser=reactive({ name:'John', age:30, address:{ city:'NewYork', country:'USA' } });

    <>性能考虑:在某些情况下,使用reactive可能会在性能上更优,因为它避免了频繁的.value访问。

创作不易,如果这篇文章对你有用,欢迎点赞关注加评论哦

小伙伴们在工作中还遇到过应用场景吗,欢迎评论区留言讨论哦。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8401.html

分享给朋友:

相关文章

戴尔科技集团创新引擎推进IT现代化的十种方式

戴尔科技集团创新引擎推进IT现代化的十种方式

       过去十年间,大大小小的企业与组织机构都在拥抱互联数字化社会。而现在,我们的工作和学习方式呈现分布式态势,正在经历更大的颠覆:家已俨然成为我们的办公和学习空...

如果我们没有自己的手机操作系统,会出现所谓的“卡脖子”“安全”问题吗?

如果我们没有自己的手机操作系统,会出现所谓的“卡脖子”“安全”问题吗?

前段时间某某高管在微博发文表示:“其实我觉得,中国人需要的不是一个自己的手机os,而是一个全国产的微信,再搭配一些辅助功能。”这算是“安卓开源”开源的代表了吧。然而打脸来的如此之快,10月30日消息,在Linux内核疑似大规...

中国芯片产量达1399亿颗,这意味着什么?

美国并不是没有明白人,只是特朗普不懂芯片产业的情况,冒冒失失在ZZ正确下,开启了对中国芯片的掐脖子,结果没掐死,反而让人练出了铁肺。芯片是所有科技产业的上游,美国原本在上游呆得很舒服,靠英伟达、AMD、德州仪器、高通等这些几十年霸主地位的公...

下一个风口最可能是什么?

下一个风口最可能是什么?

肯定是一带一路了,国内没什么卷的空间了,现在国家正在给一带一路的第三世界国家建设基础设施,等交通打通之后,就是通信打通,通信打通就是贸易打通,未来我建议大家重仓小语种,阿拉伯语最值得学(也有其他小语种自己去查一带一路国家),将来去其他国家随...

为什么这次 Mac mini 的 M4 版本价格这么低?

为什么这次 Mac mini 的 M4 版本价格这么低?

扫了一眼这里的回答,目测没几个人真买过 Macbook、Mac mini且真正当主力工作机用过。这个初始(丐版)版本的机器实际谈不上多便宜,备受热捧有几个原因。它这代产品整体做了重新设计,大幅缩减了尺寸,真正称得上 Mini 了。对比前代,...

为什么雷军身上没有酒色财气?

武大建校130周年时,雷军向母校个人捐款13亿。在2023年8月14日晚上七点,雷总在国家会议中心举行的进行第四次年度演讲「成长」:全篇都在谈成长、梦想,这么多年了,始终做到了知行合一,我相信酒色财气可能真不是他所追求的,一直追求的就像他演...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。