vue3 中的 toRaw
最编程
2024-04-30 14:41:58
...
在 Vue 3 中,toRaw
是一个函数,用于获取被代理的原始(非响应式)对象。这个函数可以用来访问被响应式对象所包装的原始数据,而不是获取到的代理对象。
当我们使用 reactive
或 ref
创建响应式对象时,Vue 3 会通过代理将其转换为响应式对象,并劫持对其属性的访问和修改。但有时,我们可能需要直接访问原始的、非代理的对象。这就是 toRaw
函数的用途。
下面是一个使用 toRaw
的示例:
import { reactive, toRaw } from 'vue';
const original = { name: 'Alice', age: 25 };
const reactiveObj = reactive(original);
console.log(reactiveObj.name); // 输出:Alice
const rawObj = toRaw(reactiveObj);
console.log(rawObj === original); // 输出:true
在上述示例中,我们首先创建了一个原始的对象 original
,然后使用 reactive
将其转换为响应式对象 reactiveObj
。接着,我们使用 toRaw
函数获取 reactiveObj
真实的原始对象,并将其赋值给 rawObj
。最后,我们通过比较 rawObj
和 original
,确认它们是相同的对象。
toRaw
的主要用途是在 Vue 3 中与外部的不支持响应式的库或代码进行交互。通过获取原始对象,我们可以处理原始数据,而无需考虑代理对象的影响。
需要注意的是,toRaw
函数只能用于响应式对象,对于普通的对象、数组或其他非代理的数据,调用 toRaw
不会有任何影响。
详细信息
toRaw()
可以返回由 reactive()、readonly()、shallowReactive() 或者 shallowReadonly() 创建的代理对应的原始对象。
这是一个可以用于临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改的特殊方法。不建议保存对原始对象的持久引用,请谨慎使用。
推荐阅读
-
2024 年 5 月 1 日 深部采煤中冲击地压危险预测的数学建模 C 问题 原文分享
-
格林尼治标准时间?UTC?CST?进来聊聊时区(Java 中的时区)
-
在 k8s 环境中处理容器定时问题的多种姿势
-
springboot 中的时区转换方案
-
时间格式器:Swift 开发中不可或缺的技巧,让日期处理更精彩!
-
自然语言处理实用入门 ---- 第 4 课:中文解析原理及相关组件介绍--《自然语言处理》中的主要解析算法、组件和服务 ...
-
Vue 3 中的 h 和 mergeProps 应用程序接口详解
-
vue2 中的双向绑定是什么,为什么要针对 vue3 进行优化?
-
LeetCode 面试经典 150 题 28.找出字符串中第一个匹配项的下标
-
[备忘录] C 中的 nan 和 inf