Vue中ref与reactive的区别

ref响应式变量

ref 函数传入一个值作为参数,返回基于该参数的响应式ref对象

ref 接受参数,并将其包裹在一个带有 value property 的对象中返回,然后可以使用该 property 访问或更改响应式变量的值

将值封装在一个对象 中,看似没有必要,但为了保持 JavaScript 中不同数据类型的行为统一,这是必须的。这是因为在 JavaScript 中,Number或 String等基本类型是通过值传递的,而不是通过引用传递的,在任何值周围都有一个封装对象,这样我们就可以在整个应用中安全地传递它,而不必担心在某个地方失去它的响应性。

javascript 复制代码
let { createApp, ref } = Vue;
        createApp({
            setup() {
                const count = ref(0); //声明
                const event = () => { //修改事件
                    count.value++;
                };
                return { count, event };
            }
        }).mount('#app')

reactive

javascript 复制代码
let { createApp, reactive } = Vue;
        createApp({
            setup() {
                const count = reactive({
                    a: 0
                }); //声明
                const event = () => { //修改事件
                    count.a++;
                };
                return { count, event };
            }
        }).mount('#app')

区别

ref主要用于基本类型的响应,比如String Number boolean,想要修改需要使用.value先获取value值进行修改

reactive主要用于声明引用类型,修改时对应修改即可

但是,在模板区域中使用的时候,ref因为Componsition API的封装,直接使用就行,不用加.value,但在setup函数中使用的时候必须加

注意!使用这两个的时候一定要先引入,再return出去

相关推荐
kyriewen31 分钟前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒1 小时前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet1 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
wangchunyu1141 小时前
JavaScript 零基础入门教程
前端
hanchenxing2 小时前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
mONESY2 小时前
LangGraph.js 从零上手:把 Agent 工作流从一条线变成一张网
javascript
默_笙2 小时前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
小羊没烦恼!3 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
码上成长3 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架