首页 > 其他分享 >Vue 3中的ref 和 reactive,toRefs 和 toRef

Vue 3中的ref 和 reactive,toRefs 和 toRef

时间:2025-01-10 16:22:23浏览次数:1  
标签:Vue 响应 对象 toRefs toRef reactive ref 属性

在 Vue 3 中,refreactive 是用来创建响应式数据的两种不同方式,它们有各自的特点和适用场景。

  1. ref:

    • ref 用于将基本类型(如:字符串、数字)转化为一个带有 .value 属性的对象,这个属性是响应式的。
    • 对于嵌套的数据结构,当使用 ref 包裹时,内部的属性也会自动变为响应式的,无需手动转换,但是自动转换时必须伴随.value
    • 当你需要直接操作 DOM 元素或子组件实例时,ref 也可以用作特殊的属性值,它会指向相应的 DOM 节点或子组件实例。
  2. reactive:

    • reactive 接收一个普通的 JavaScript 对象然后返回该对象的响应式代理。它不会处理基本类型,只适用于对象(包括数组)。
    • 使用 reactive 创建的对象的所有嵌套属性都会变成响应式的,且是深层响应式的。
    • 不适合直接用于基本类型。

选择使用哪一个取决于你的具体需求。如果你需要包装一个基本类型或者你想要一个更简单的 API 来访问和修改响应式数据,那么你可以使用 ref。如果你有一个复杂的对象并且希望整个对象都是响应式的,那么 reactive 可能更适合。

补充:ref创建的对象可以直接整体更新值,而reactive不行。

 

toRefstoRef 是 Vue 3 中提供的工具函数,用于处理响应式对象的解构问题,确保解构后的属性仍然保持其响应性。

  1. toRefs:

    • toRefs 接收一个由 reactive 创建的响应式对象,并返回一个普通对象,其中原始对象的所有属性都被转换成了 ref
    • 这对于将响应式对象的属性解构到单独的变量中非常有用,同时确保每个解构出来的属性都保留了它的响应性。
    • 使用场景:当你需要解构一个响应式对象(例如从 setup 函数返回)并且不希望失去响应性时。
  2. toRef:

    • toRef 可以用来创建一个引用(ref),它与源响应式对象上的某个特定属性绑定。这意味着对这个 ref 的任何修改都会反映回原对象的对应属性上,反之亦然。
    • 它适用于当你不想直接使用 reactive 对象但又想保持对对象上某一个属性的响应式连接时。
    • 使用场景:当你只需要响应式地跟踪对象上的一个或几个属性时,可以使用 toRef 来创建这些属性的响应式引用,而不需要将整个对象转换为 refs。

两者的主要区别在于 toRefs 是将整个响应式对象转换成一个所有属性都是 ref 的新对象,而 toRef 则是针对单个属性创建一个与源属性同步的 ref

标签:Vue,响应,对象,toRefs,toRef,reactive,ref,属性
From: https://www.cnblogs.com/chengsongbiao/p/18664166

相关文章

  • 基于SpringBoot+Vue+uniapp的民宿在线预定平台毕业设计的详细设计和实现(源码+lw+部署
    前言......
  • Download the Vue Devtools extension for a better development experience/浏览器扩
    文章目录一、引言二、下载相关插件三、浏览器加载插件四、运行代码一、引言在做Vue项目的开发时,我们经常需要在页面上调试,若没有安装vue-devtools插件则肯能有以下报错。DownloadtheVueDevtoolsextensionforabetterdevelopmentexperience:https://githu......
  • 协同过滤算法私人诊所系统|Java|SpringBoot|VUE| 
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apach......
  • vue3 toref函数 torefs函数 简化模板写法
    一、作用简化模板{{xx}},xx的长度二、toRef1、语法toRef(对象,属性)2、案例<template><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><h2>工资:{{salary}}</h2><button@click="name+=`~`">姓名</button&g......
  • Vue3 Composition API使用错误
    Vue3CompositionAPI使用错误详解引言随着Vue3的发布,CompositionAPI作为其核心特性之一,受到了广泛关注和应用。相比于Vue2中的选项式API(OptionsAPI),CompositionAPI提供了更高的灵活性和代码复用性,尤其适用于大型复杂项目的开发。然而,新的API也带来了一些学习曲线和......
  • 078:vue+cesium 设置开始结束时间,循环自动播放
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第078篇文章文章目录一......
  • 8.在 Vue 3 中使用 ECharts 实现 K 线图:完整教程与代码解析
    引言K线图是金融领域中常用的图表类型,用于展示股票、外汇等资产的价格波动。ECharts是一个功能强大的JavaScript图表库,能够帮助我们轻松实现复杂的K线图。本文将详细介绍如何在Vue3中使用ECharts实现一个动态K线图,并逐步解析代码的实现细节。资源代码中的'cand......
  • Vue3 hook 函数模块化 类似vue2 mixin
    1、优点代码功能模块化,复用代码2、建立新建hooks文件夹,在src下src/hooks/use功能.js3、案例a、模块化src/hooks/usepoint.jsimport{reactive,onMounted,onBeforeUnmount}from'vue';exportdefaultfunction(){letponint=reactive({x:0,......
  • 在Vue 3中创建和使用FormData对象
    在Vue3中创建和使用FormData对象的具体步骤如下‌:‌创建FormData对象‌:在Vue组件中,首先需要创建一个新的FormData对象。FormData是一个内置的JavaScript对象,用于构建可以通过XMLHttpRequest或fetch提交的表单数据。可以通过以下方式创建:letformData=newFormData(); ......
  • JAVA开源免费项目 基于Vue和SpringBoot的常规应急物资管理系统(附源码)
    本文项目编号T159,文末自助获取源码\color{red}{T159,文末自助获取源码}......