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

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

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

事情是这样的,我和同事在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

分享给朋友:

相关文章

百度收录又开始“作”了,用“快速抓取”替代“快速收录”

百度收录又开始“作”了,用“快速抓取”替代“快速收录”

作为国内不得不用的知名搜索引擎“百度”,对于网站收录的规则,又有新的升级。以前有个快速收录,我们可以通过WordPress插件,免费快速提交给百度。但是现在这个功能没了,取而代之的是“快速抓取”,如下图想要使用此功能,需要加入“VIP俱乐部...

下班后可以做点什么副业赚钱呢?

下班后可以做点什么副业赚钱呢?

首先说明一下,我分享的任务不需要交钱,也不需要入群,只需要你去平台学习就可以。如果有任何让你交钱,进群的任务,请警惕被割韭菜。今天给大家分享7大赚钱副业,新手小白0粉丝0门槛0技术都可以去做,不说大富大贵,但是赚个零花钱还是可以。如果你已经...

数字人民币为什么又不火了?

我完全不懂行。我一开始以为,数字人民币,是对我银行里的每一分钱,都赋予一个独一无二的数字编码。我要用一块钱买矿泉水,它就从我的存款中随机选取一百个一分钱,组合成一块钱,支付给商家。我花一百块钱吃饭,它就随机选取一万个一分钱,组合成一百块钱,...

闲鱼上为什么会有人问都不问直接下单?

我去年卖一个荣耀90,挂的2200,最终成交2137.5元。对方是一个高高壮壮的西北口音,要求的自取。大概我吃过午饭,约了旁边的商场,那里有荣耀售后。见了面,先看了手机,试了好一会儿,各种测试,没问题。然后去了商场二楼的荣耀售后,让人家售后...

都是前端框架,为什么用 React 的人会有优越感?

都是前端框架,为什么用 React 的人会有优越感?

上家公司一直搞react,最近第一次写个vue3项目。老板朋友来了看了下页面说:这用vue写的吧。我:是...老板朋友:一看就知道是vue做的。这tm你看一眼页面就知道用的啥框架?这感觉就是,我一直用苹果,偶尔用了下华为打电话,有个人离老远...

拼多多百亿补贴买手机电脑等数码产品靠谱吗?

大家很多人都在问pdd百亿补贴购机靠谱吗?首先声明一下,我不是pdd的人,我只是一个普普通通混迹从事pc行业的数码玩家,我只是在评论区看到很多人都在无脑推百亿补贴,特地发一条怗子来说明一下这个东西。此怡不存在偏向引导,此站仅站在我个人角度上...

发表评论

访客

看不清,换一张

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