对vue3/core源码ref.ts文件API的认识过程

对toRef()API的认识的过程:

最开始认识toRef()是从vue3源码中的ref.ts看见的,右侧GPT已经举了例子

然后根据例子,在控制台输出ref对象是什么样子的:

这就是ref对象了,我们根据对象中有没有__v_isRef来判断是不是一个ref对象,当对象存在且__v_isRef === true的时候他就判定为是一个ref对象然后返回true.

对shallowRef()API的认识的过程:

这是shallowRef的源码:

什么是shallowRef?

shallowRef用来创建一个浅层的ref对象,浅层ref只会对对象的第一层属性进行响应式处理,不会递归处理对象内部的属性.

对shallowRef()API的认识的过程:

对unRef()API的认识的过程:


 

对customRef()API的认识的过程:

源码:

文档解释:

防抖执行效果:

对toRefs()API的认识的过程:

源码:

toRefs()API的作用是:

// 创建一个Ref对象
const myRef = ref(1)

// 创建一个响应式对象
const myReactiveObj = reactive({ count: 3 })

// 修改Ref对象的值
myRef.value = 8

// 修改响应式对象的属性
myReactiveObj.count = 8

// 访问Ref对象的值
console.log(myRef.value) // 输出8

// 访问响应式对象的属性
console.log(myReactiveObj.count) // 输出8

将reactive所创造的响应式对象改为ref对象.

对toRefs()API的认识的过程:

源码:

GPT举例子:

const reactiveObj = reactive({ count: 3 })

// 使用toRef将响应式对象的属性转换为Ref对象
const countRef = toRef(reactiveObj, 'count')

// 修改Ref对象的值
countRef.value = 8

// 此时reactiveObj的count属性也会被更新为8
console.log(reactiveObj.count) // 输出8

toref()和torefs有什么区别呢?

toref用于将一个响应式对象的特定属性改为ref对象,

torefs用于将一个响应式对象的所有响应式属性啊ref对象,且返回一个包含所有转换后属性的对象

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

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

相关文章

Linux-组管理和权限管理

1 Liunx组的基本介绍: 在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件都有所有者、所在组、其他组的概念 所有者所在组其它组改变用户所在的组 2 文件/目录的所有者 一般文件的创建者,谁创建了该文件,就…

Docker in Docker(DinD)原理与实践

随着云计算和容器化技术的快速发展,Docker作为开源的应用容器引擎,已经成为企业部署和管理应用程序的首选工具。然而,在某些场景下,我们可能需要在Docker容器内部再运行一个Docker环境,即Docker in Docker(…

002 CentOS 7.9 redis-7.2.5安装及配置

https://github.com/redis/redis https://redis.io/insight/#insight-form 安装及配置 在CentOS 7.9上安装和配置Redis 7.2.5版本,可以遵循以下详细步骤: 一、准备工作 确保安装包已准备好: 确认您已经下载了redis-7.2.5.tar.gz安装包&a…

从程序被SQL注入来MyBatis 再谈 #{} 与 ${} 的区别

缘由 最近在的一个项目上面,发现有人在给我搞 SQL 注入,我真的想说我那么点资源测试用的阿里云服务器,个人估计哈,估计能抗住他的请求。狗头.png 系统上面的截图 数据库截图 说句实在的,看到这个之后我立马就是在…

游戏找不到d3dcompiler_43.dll怎么办,教你5种可靠的修复方法

在电脑使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到d3dcompiler43.dll”。这个问题通常出现在游戏或者图形处理软件中,它会导致程序无法正常运行。为了解决这个问题,我经过多次尝试和总结,找到了以下五…

idea2023的git从dev分支合并到主分支master

1.本地项目切换到主分支master 右键项目-git-Branches 依次点击项目-Remote-Origin-master-CheckOut 现在你的idea中的这个项目就是远程master分支的代码了。 2.合并dev分支到master 右击项目-git-Merge 选择origin-dev 点击Merge按钮,此时只是合并到本地的maste…

每日一题---有效的括号问题

文章目录 前言1.题目以及分析2.参考代码 前言 前面我们学习了栈的相关操作,现在我们做一道题,进行巩固 Leetcode—有效的括号 1.题目以及分析 这道题就可以使用栈进行操作,因为把最左边的括号当成栈底,最右边的是栈顶&#xff0c…

【每日刷题】Day49

【每日刷题】Day49 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 110. 平衡二叉树 - 力扣(LeetCode) 2. 501. 二叉搜索树中的众数 - 力扣&…

基于YOLOv8的车牌检测与识别(CCPD2020数据集)

前言 本篇博客主要记录在autodl服务器中基于yolov8实现车牌检测与识别,以下记录实现全过程~ yolov8源码:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 一、环境配置 …

python学习:基础语句

目录 条件语句 循环语句 for 循环 while 循环 break continue 条件语句 Python提供了 if、elif、else 来进行逻辑判断。格式如下: Pythonif 判断条件1: 执行语句1... elif 判断条件2: 执行语句2... elif 判断条件3: 执行语句3... else: 执行语句4…

C# 集合(六) —— 自定义集合Collection类

总目录 C# 语法总目录 集合六 Collection 1. 自定义集合Collection其他 1. 自定义集合Collection Collection可以对添加删除元素或者添加删除属性进行事件响应。 class Person {public string name;public int age;public Person(){this.name "";this.age 0;}pub…

ubuntu 硬盘转移

我插了两个 文件系统: ubuntu 硬盘转移: sudo dd if/dev/sdX1 of/dev/sdY1 bs128K convnoerror,sync statusprogressdd 的意思是DiskToDisk,if 是输入文件系统,of是输出文件系统。 bs是每次传递的数据大小。 注意:接…

mysql-主从同步原理

AB复制(重点) 一、什么是主从复制? 1、主从同步也叫AB复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。 2、主从复制的作用 1.做数据的热备,作为后备数据库,…

如何用MySQL的SQL语句来读写硬盘目录文件

1.先确保创建表,例如起名Temp CREATE TABLE temp ( id int(11) NOT NULL AUTO_INCREMENT, image mediumblob, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT7 DEFAULT CHARSETutf8; 注意这里的image字段用mediumblog,就可以避免出现data too …

27【Aseprite 作图】盆栽——拆解

1 橘子画法拆解 (1)浅色3 1 0;深色0 2 3 就可以构成一个橘子 (2)浅色 2 1;深色1 0 (小个橘子) (3)浅色 2 1 0;深色1 2 3 2 树根部分 (1)底部画一条横线 (2)上一行 左空2 右空1 【代表底部重心先在右】 (3)再上一行,左空1,右空1 (4)再上一行,左突出1,…

省市区(输入code) 转相应省市区工具类(两种方式)

方式一 通过调用接口(时间高达1s) package cn.iocoder.yudao.module.supplier.utils;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element;import java.io.BufferedReader; import java.io.InputStreamReader; i…

Java 泛型基础

目录 1. 为什么使用泛型 2. 泛型的使用方式 2.1. 泛型类 2.2. 泛型接口 2.3. 泛型方法 3. 泛型涉及的符号 3.1. 类型通配符"?" 3.2. 占位符 T/K/V/E 3.3. 占位符T和通配符?的区别。 4. 泛型不变性 5. 泛型编译时擦除 1. 为什么使用泛型 Java 为…

基于深度学习的入侵检测系统综述文献概述

好长时间不发博客了,不是因为我摆烂了,是我换研究方向了,以后我就要搞科研了。使用博客记录我的科研故事,邀诸君共同见证我的科研之路。 1、研究方向的背景是什么? (1)互联网发展迅速&#xff…

Android firebase消息推送集成 FCM消息处理

FirebaseMessagingService 是 Firebase Cloud Messaging (FCM) 提供的一个服务,用于处理来自 Firebase 服务器的消息。它有几个关键的方法,你提到的 onMessageReceived、doRemoteMessage 和 handleIntent 各有不同的用途。下面逐一解释这些方法的作用和用…

在 C++ 中,p->name 和 p.name 的效果并不相同。它们用于不同的情况,取决于你是否通过指针访问结构体成员。

p->name&#xff1a;这是指针访问运算符&#xff08;箭头运算符&#xff09;。当 p 是一个指向结构体的指针时&#xff0c;用 p->name 来访问结构体的成员。 student* p &stu; // p 是一个指向 student 类型的指针 cout << p->name << endl; // 通过…