首页 > 其他分享 >Vue3深度解析:reactive和ref的区别你真的了解吗?

Vue3深度解析:reactive和ref的区别你真的了解吗?

时间:2023-09-18 15:34:41浏览次数:43  
标签:count 函数 响应 reactive Vue3 message ref

Vue3深度解析:reactive和ref的区别你真的了解吗?_函数返回

Vue 3中引入了Composition API,其中包含了reactive和ref两个核心函数。这两个函数都是用于创建响应式数据的,但它们之间有一些区别。

首先,让我们来看一下reactive函数。reactive函数接受一个普通对象作为参数,并返回一个新的响应式对象。这个响应式对象会跟踪所有属性的变化,并在属性发生变化时触发相应的更新操作。reactive函数的使用非常简单,只需要将需要转换为响应式的对象传递给它即可。

下面是一个使用reactive函数的示例代码:

import { reactive } from 'vue';

const state = reactive({
  count: 0,
  message: 'Hello Vue 3!'
});

console.log(state.count); // 输出 0
state.count++;
console.log(state.count); // 输出 1

在上面的代码中,我们使用reactive函数将一个包含count和message属性的对象转换为响应式对象。当我们修改count属性的值时,reactive函数会自动追踪到这个变化,并触发组件的重新渲染。

接下来,让我们看一下ref函数。ref函数与reactive函数类似,也是用于创建响应式数据的。不同之处在于,ref函数返回的是一个响应式的引用,而不是整个对象。这意味着我们可以在模板中直接使用这个引用,而不需要通过.value来访问实际的值。

下面是一个使用ref函数的示例代码:

import { ref } from 'vue';

const count = ref(0);
const message = ref('Hello Vue 3!');

console.log(count.value); // 输出 0
count.value++;
console.log(count.value); // 输出 1

在上面的代码中,我们使用ref函数创建了两个响应式的引用count和message。这些引用可以在模板中直接使用,例如{{ count }}{{ message }}。当我们修改ref引用的值时,相关的组件也会相应地更新。

总结一下,reactive函数和ref函数都可以用于创建响应式数据,但它们的区别在于reactive函数返回的是整个对象,而ref函数返回的是对象的引用。使用ref函数可以更方便地在模板中直接使用响应式数据,而不需要通过.value来访问实际的值。选择使用哪个函数取决于具体的需求和场景。

标签:count,函数,响应,reactive,Vue3,message,ref
From: https://blog.51cto.com/u_16228250/7511206

相关文章

  • vue3 computed属性
    该随笔是根据b站小满zs的Vue3+vite+Ts+pinia+实战+源码+electron的视频学习写的,Vue3+vite+Ts+pinia+实战+源码+electron......
  • Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建
    前言:接下来又得被迫开启新的一门课程的学习了,上半年末尾淘汰又即将拉开序幕【已经记不清经历过多少次考试了】,需要去学习其它领域的技术作为考试内容,我选了springboot相关技术,所以。。总之作为男人,不能轻易言败,尽力而为,抱怨解决不了任何问题,逆境使人进步,我坚信这点,效果:在正式学习......
  • Spring Boot&Vue3前后端分离实战wiki知识库系统<十三>--单点登录开发二
    接着SpringBoot&Vue3前后端分离实战wiki知识库系统<十二>--用户管理&单点登录开发一继续往下。登录功能开发: 接下来则来开发用户的登录功能,先准备后端的接口。后端增加登录接口:1、UserLoginReq:先来准备用户登录的请求实体:packagecom.cexo.wiki.req;importjavax.validation.co......
  • vue3 浏览器“Uncaught runtime errors:” 全屏报错提示关闭
      在项目的vue.config.js中配置module.exports={devServer:{client:{overlay:false//编译错误时,取消全屏覆盖(建议关掉)}}}......
  • vue2和vue3使用echarts时无数据,怎么显示暂无数据图片或文字
    一开始也经历了用v-if和v-show,v-show的话echarts还会留出暂无数据图片的位置,导致echarts变形,v-if在加载和不加载切换时,dom会获取不到;后来也是在网上找的方法,时间有点长,原文地址就不贴了。对了,在网上查方法的时候还找到了echarts noDataLoading这个方法,按照网上的写完,但是并没有......
  • firefox自动更新关闭
    原文:更新日期:SatSep03202220:10:00GMT+0800,阅读量:4690请访问原文链接:如何禁用Firefox自动更新(macOS,Linux,Windows),查看最新版。原创作品,转载请保留出处。作者主页:sysin.org禁用浏览器自动更新系列文章:如何禁用Firefox自动更新(macOS,Linux,Windows)如何......
  • firefox浏览器下用getElementById取一个隐藏表单域内容时发现的问题
    这样一段代码:<inputtype="hidden"id="test"value="09"/><scripttype="text/javascript"><!--alert(document.getElementById("test").value);//--></script>在IE下能正确运行,但是在firefox下就不行。如果将type......
  • vue3项目rem自适应大小如何实现
    ❝rem自适应方案只是页面自适应的解决方案之一,本文主要讲解一下实现过程!本文演示的是Vue3语法!❞rem自适应随着现在互联网设备的日益更新,各大尺寸的屏幕参差不穷导致我们的布局在某些小屏或者大屏上与UI的表现并不一致所以,很多人寻求各种解决方案,我们现在的很多移动端框架都是支持......
  • vue3中验证手机号的正则表达式
    在Vue3中,你可以使用正则表达式来验证手机号。以下是一个基本的手机号验证正则表达式示例,可以用于检查中国大陆地区的手机号码:constphoneNumberRegex=/^1[3456789]\d{9}$/;//示例用法constphoneNumber="13812345678";if(phoneNumberRegex.test(phoneNumber)){cons......
  • 掌握ref函数的秘诀:详细解析其具体用法
    Vue3中的ref函数是一个用于创建响应式数据的函数。在Vue3中,当组件渲染时,会生成一个响应式数据对象,该对象包含了组件实例的所有数据属性。使用ref函数可以创建一个响应式的数据对象,并且可以在组件的生命周期内进行读取和修改。具体来说,ref函数接受一个初始值作为参数,并返回一个包含......