常用 Composition API--ref函数

news2025/1/21 12:08:56

ref函数--处理基本类型

以前我们的ref属性用处主要用于打标识,像原生js中的id标签一样。我们可以通过这个ref函数可以实现获取input元素,并让他获取焦点触发事件

而在v3中的是ref函数

先提出一个例子,我点击一个按钮,但是页面并没有重新渲染出我们想要的结构,但是在终端中已经看到数据已经发送了改变,只是没有渲染到页面上

因为我们这样的数据并不是一个响应式数据 

如果把一个数据变成一个响应式数据,首先我们要引入ref这个对象,然后用ref包裹起来,这个ref就帮我们加工成了响应式数据

ref加工之后的数据变成了一个对象

 一般来说我们把这个对象成为引用对象

 它把get和set放到它的原型对象中,然后通过数据代理,实现了把value的值放到_value里面。

我们要读和改需要 .value

 而现在有一件很神奇的事情,如果你在插值表达式中不使用.value那么页面展示,而加了.value反而没有效果

 因为在模板中你不需要.value,v3已经帮我们+好了.value 

ref函数--处理对象类型

对象类型也可以直接写在setup中,需要设置就直接在模板中.出来就可以了

现在有一个需求就是我点击一下这个按钮,改变这个工资

 这种写法是错误的,之前我们的思路是要把这个数据变成一个响应式的数据,然后通过.value修改值

 我们发现可以直接.出来,而且这个类型也变成了我们不熟悉的ref类型而是Proxy代理对象

用一张图来说明

 就是基本数据类型,确实是用过Reflmpl的value来获取,但是对象类型不是。不存在绿色的俩条线。而是变成了Proxy代理对象

总结 

作用: 定义一个响应式的数据
语法: ``const xxx = ref(initValue)``
创建一个包含响应式数据的引用对象(reference对象,简称ref对象)
  - JS中操作数据: xxx.value
  - 模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>
- 备注:
  - 接收的数据可以是:基本类型、也可以是对象类型。
  - 基本类型的数据:响应式依然是靠 Object.defineProperty()的 get与 set完成的。
  - 对象类型的数据:内部 求助 了Vue3.0中的一个新函数—— reactive函数。

也就是reactive函数里面具体写了对Proxy的实现

reactive函数

作用: 定义一个 对象类型 的响应式数据(基本类型不要用它,要用 ref 函数)

第一步先去引用一下它

如果我们实现普通数据类型去搞reactive,发现,页面直接警告。说普通数据的一个数据不做成响应式数据 。因此我们要给他传入一个对象类型

变成了一个响应式数据,而我们使用reactive包裹那就不需要.value就可以拿到它的响应对象

 reactive对象处理数据的一个深层次的

也能访问数组类型 

所有复杂数据类型就是建议使用reactive,而不是ref,使用ref每次都要写一下.value太麻烦了

 通过reactive包裹一个对象,然后把数据放到对象。使用就person.一下属性就可以出来,这样更加语义化了 。

总结

语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)
reactive定义的响应式数据是“深层次的”。
内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordCount 在 MapReduce上运行详细步骤

注意&#xff1a;前提条件hadoop已经安装成功&#xff0c;并且正常启动。 1.准备好eclipse安装包&#xff0c;eclipse-jee-juno-linux-gtk-x86_64.tar.gz&#xff0c;使用SSH Secure File Transfer Client工具把安装包上传于Hadoop集群的名称节点。 2.上传Hadoop在eclipse上运…

C++缺省参数的具体使用

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】 本文来详细介绍C中的缺省参数。正文开始&#xff1a; 目录 一、缺省参数概念二、缺省参数分类2.1全缺省2.2半缺省 三、缺省参数…

Linux上搭建Discuz论坛

一.准备工作 1.下载php*&#xff0c;mariadb-server 2.上传Discuz3.5压缩包并解压 二.搭建过程 基于redhat 9 版本和Discuz3.5&#xff0c;php8.0&#xff0c;mariadb10.5演示 一.准备工作 1.下载php*&#xff0c;mariadb-server [rootredhat9 aaa]# yum install -y php*…

300元的蓝牙耳机什么牌子好?300内无线蓝牙耳机推荐

感受过无线的自在舒适后&#xff0c;越来越多的小伙伴爱上了蓝牙耳机白天出街更潇洒&#xff0c;目前市面上蓝牙耳机琳琅满目可选择性较多价格从几十、几百元到数千元不等然而蓝牙耳机的安全性、舒适性如何&#xff1f;连接稳吗&#xff1f;下面整理了几款300元价位的耳机分享给…

前端配置项

默认下载安装所需插件的时候会自动添加配置&#xff0c;但有时候可能需要自己去配&#xff0c;比如系统重装&#xff08;重装的是C盘&#xff0c;系统变量会丢失&#xff0c;软件在其他盘符并不需要重新下载&#xff09;。 前端开发涉及到需要配置变量的软件有&#xff1a;git…

JVM之GC日志解读

通过阅读Gc日志&#xff0c;我们可以了解Java虚拟机内存分配与回收策略。 内存分配与垃圾回收的参数列表 -XX:PrintGC 输出GC日志。类似&#xff1a;-verbose:gc -XX:PrintGCDetails 输出GC的详细日志 -XX:PrintGCTimestamps 输出GC的时间戳&#xff08;以基准时间的形式&#…

如何进行帕累托分析

【面试题】有一张“学生成绩表”&#xff0c;包含3个字段&#xff1a;学号、课程、成绩。 问题&#xff1a;找出每门课程A类和B类的学生&#xff0c;判断标准是累计占比&#xff0c;0~60%的记为A类&#xff0c;60%~85%记为B类 【解题思路】 什么是二八定律&#xff1f; 二八定律…

Java通过显示弹奏音乐的方式来实现继承的有关方法

目录 前言 一、Music.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 二、Brass.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 三、Wind.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 四、Instrument.java类 1.1运行流程&…

世界领先的电动汽车国际标准 一 ISO 15118全系列

世界领先的电动汽车国际标准 一 ISO 15118全系列 ISO 15118 的官方名称是“道路车辆——车辆到电网的通信接口”。我可能有点偏见&#xff0c;因为我是该国际标准的共同作者之一&#xff0c;但我坚信 ISO 15118 是当今可用的最重要和面向未来的标准之一。 ISO 15118 中内置的…

C语言学习分享(第三次)------了解C语言-下

了解C语言-下 前言知识列表1. 函数1.1认识函数1.2 自己实现函数1.3 注意事项以及函数的好处 2. 数组2.1 认识数组2.2 数组的下标 3. 操作符3.1 算数操作符3.2 移位操作符和位操作符3.3 赋值操作符3.4 单目操作符3.5 关系操作符3.6 条件操作符3.7 逗号表达式 4. 常见关键字4.1 关…

开源正当时,共赢新未来 OpenHarmony开发者大会成功召开

4月19日&#xff0c;以“开源正当时&#xff0c;共赢新未来”为主题的开放原子开源基金会OpenHarmony开发者大会2023&#xff08;以下简称“大会”&#xff09;成功举办。 本次大会由开放原子开源基金会指导&#xff0c;OpenHarmony项目群工作委员会主办&#xff0c;华为、开鸿…

Windows逆向安全(一)之基础知识(九)

汇编比较三种循环 众所周知&#xff0c;在C语言可以使用可以使用三种循环&#xff0c;分别是&#xff1a;while、do…while和for 本文从汇编的角度出发&#xff0c;观察这三种循环的差异 范例代码 先贴出三种循环的代码&#xff0c;分别用这三种循环计算 0123456789&#…

【PyTorch】第三节:反向传播算法

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

SpringBoot高校毕业生就业信息管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBoot框架开发的高校毕业生就业信息管理系统项目。首先&#xff0c;这是一个响应式的项目&#xff0c;代码…

五:用户空间内存分配

目录 用户空间内存分配 mmap malloc 用户空间内存分配 mmap 将内核空间直接映射到用户空间&#xff0c;省去从内核到用户空间的内存拷贝。 mmap的缺点 mmap 使用时必须实现指定好内存映射的大小&#xff0c;因此 mmap 并不适合变长文件&#xff1b;mmap如果更新文件的操作…

【通过Cpython3.9源码看看python字符串的缓存机制】

基本说明 在CPython中&#xff0c;字符串intern机制是一种字符串对象缓存机制&#xff0c;用于避免创建多个相同内容的字符串对象&#xff0c;以减少内存使用。具体来说&#xff0c;如果两个字符串对象的内容相同&#xff0c;那么这两个字符串对象实际上会共享同一块内存空间。…

【Vue基础】前端工程化Vue项目

一、创建Vue项目步骤 1、新建一个文件夹&#xff0c;起名为vue_project01 2、在该文件夹中打开cmd&#xff0c;输入指令vue ui&#xff0c;打开图形化界面 3、此时跳转到网页&#xff0c;根据以下步骤配置vue项目 1&#xff09;项目名命名为test01&#xff1b;选择包管理器为…

使用R语言进行方差分析(ANOVA、ANCOVA)(一)

方差分析&#xff08;一&#xff09; 1. ANOVA模型拟合1.1 aov()函数1.2 表达式中各项的顺序 2. 单因素方差分析&#xff08;One-Way ANOVA&#xff09;2.1 绘制各组均值及其置信区间的图形2.2 多重比较-TukeyHSD2.2.1 成对比较图2.2.2 多重均值比较-TukeyHSD&#xff08;更易理…

图的存储(邻接矩阵邻接表)

图的存储 文章目录 图的存储1 邻接矩阵1.1 邻接矩阵存储结构定义1.2 完整代码应用 2 邻接表2.1 邻接表存储结构定义2.2 完整代码应用 1 邻接矩阵 A [ i ] [ j ] 1 A[i][j]1 A[i][j]1 表示顶点i与顶点j邻接&#xff0c;即i与j之间存在边或者弧。 A [ i ] [ j ] 0 A[i][j]0 A…

使用jdk17 搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式

搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式&#xff0c;使用jdk17 搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式1. 创建一台虚拟机2. 安装jdk17&#xff08;1&#xff09;下载jdk17&#xff08;2&#xff09;安装jdk17&#xff08;3&#xff09;配置环境变量 3. 虚拟机之间…