当前位置: 首页 > article >正文

Vue3:toRaw与markRaw

目录

一.toRaw

1.性质

2.作用

二.markRaw

1.性质

2.作用

三.toRaw的使用

四.markRaw的使用

五.代码示例


在Vue 3中,toRaw和markRaw是两个用于处理响应式对象的全局函数。

一.toRaw

1.性质

toRaw是一个全局函数,它接受一个由reactive或ref生成的响应式对象,并返回该对象的原始非代理版本。

2.作用

使用toRaw可以绕过响应式系统的拦截,直接访问对象的原始状态。这对于需要临时读取对象的原始值而不触发代理机制的情况非常有用。例如,当您需要与不理解Vue响应性系统的第三方库交互时,可以使用toRaw来获取对象的原始数据。

二.markRaw

1.性质

markRaw也是一个全局函数,它标记一个对象,使其永远不会被转换为响应式代理。

2.作用

通过使用markRaw,您可以确保某些对象不会被Vue的响应性系统跟踪,从而减少不必要的性能开销。这对于标记那些不需要响应性的对象(如静态配置或缓存数据)非常有用。

三.toRaw的使用

当修改person对象的name属性时,由于它是响应式的,所以界面上显示的名字会立即更新。但是,当尝试修改rawPerson对象的name属性时,界面上显示的名字不会发生变化,因为rawPerson已经被转换为了非响应式对象。

四.markRaw的使用

markRaw用于标记一个对象,使其永远不会被转换为响应式代理。在这个例子中,car1是一个原始对象,使用markRaw进行标记,而car2是通过reactive函数创建的响应式对象。

五.代码示例

<template>
    
  <h2>对象1:{{ person }}</h2>
  <h2>对象2:{{ rawPerson }}</h2>
  <h2>汽车1:{{ car1 }}</h2>
  <h2>汽车2:{{ car2 }}</h2>

  <button @click="changName1">修改名字1</button>
  <button @click="changName2">修改名字2</button>


  <span></span>
</template>

<script lang="ts" setup name="App">

import { reactive,toRaw,markRaw,isReactive, ref } from "vue";
   
   // 响应式对象
   let person = reactive({name:'小明',age:18})
   // 原始对象
   let rawPerson = toRaw(person)

   function changName1(){
    person.name = 'tim'
   }

   function changName2(){
    rawPerson.name = 'pp'
   }
   
   
   /* markRaw */
   let car1 = markRaw(
     {id:'1',brand:'宝马'},
   )

   let car2 = reactive(car1)

</script>
  
<style>
button{
  width: 150;
  height: 40;
}
  
</style>


http://www.kler.cn/a/319568.html

相关文章:

  • 网络远程操控
  • Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化
  • Vue常用加密方式
  • F5全新报告揭示AI时代API安全面临严峻挑战
  • 「QT」几何数据类 之 QLine 整型直线类
  • js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
  • LeetCode 210. 课程表 II
  • yum 集中式安装 LNMP
  • 当电子设计竞赛照进生活!
  • 深入探秘 WorkManager:Android 异步任务管理的强大工具
  • 探索《藏汉翻译通》小程序:跨平台的藏文翻译利器
  • PostgreSQL - pgvector 插件构建向量数据库并进行相似度查询
  • django应用JWT(JSON Web Token)实战
  • C语言习题~day35
  • 产业报告 | 2024年中国机器人产业研究报告
  • 【裸机装机系列】15.kali(ubuntu)-重装linux步骤
  • android 14分屏实战之小米su7的3分屏实现方案讨论及线索征集
  • 智慧城市运营模式--政府和社会资本合作
  • 【Java数据结构】--- 优先级队列
  • fastjson的json字符串转List
  • 移动技术开发:ListView水果列表
  • C++ prime plus-7-編程練習
  • 2024年华为杯中国研究生数学建模竞赛E题(高速公路应急车道紧急启用模型)思路
  • Unity 的Event的Use()方法
  • 《Detection of Tea Leaf Blight in Low-Resolution UAV Remote Sensing Images》论文阅读
  • 海信智能电视的使用心得