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

Vue - toRaw 与 markRaw

一、toRaw

作用:

  • 用于获取一个响应式对象的原始对象,toRaw 返回的对象不再是响应式的,不会触发视图更新

使用场景:

  • 在需要将响应式对象传递给非 Vue 的库或外部系统时,使用 toRaw 可以确保它们收到的是普通对象。
<template>
    <div class="person">
       <h3>姓名:{
  
  {person.name}}</h3>
       <h3>年龄:{
  
  {person.age}}</h3>
       <button @click="changeAge">修改年龄</button>
       <hr>
        <h3>姓名:{
  
  {rawPerson.name}}</h3>
       <h3>年龄:{
  
  {rawPerson.age}}</h3>
       <button @click="rawChangeAge">修改年龄</button>
    </div>
    
</template>
    
<script setup lang='ts' >
import { reactive, toRaw } from 'vue';

// person 是响应式数据
const person = reactive({
    name: 'Tom',
    age:20,
})
// rawPerson 原始数据
const rawPerson = toRaw(person)

// 对比
console.log('响应式数据',person);
console.log('原始数据',rawPerson);
// 响应式数据 可修改
const changeAge = () => {
    person.age += 1;
}
// 原始数据  不可修改
const rawChangeAge = () => {
    console.log('rawPerson中的age',rawPerson.age);
    rawPerson.age += 1;
}

</script>
<style scoped>

</style>

二、markRaw

作用:

markRaw 用于标记一个对象,使其在 Vue 的响应式系统中保持“原始状态”。这意味着被 markRaw 标记的对象在 Vue 的响应式逻辑中不会被代理,因此不会变为响应式对象。

即,标记一个对象,使其永远不会变成响应式的。

总结 

API用途适用场景
toRaw获取响应式对象的原始对象调试、访问响应式对象的实际值
markRaw将对象标记为原始,使其不变为响应式对象对于大型对象或不需要响应式特性的第三方库实例

通过适当地使用 toRaw 和 markRaw,可以在开发过程中有效地管理 Vue 的响应式性和性能。


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

相关文章:

  • 18.[前端开发]Day18-王者荣耀项目实战(一)
  • 蓝桥备赛指南(6)
  • PHP XML操作指南
  • [250203] glibc 2.41 发布 | Flutter 颜色管理库 color_palette_plus 2.0.0 发布
  • Pandoc, Zotero, JabRef 管理论文引用,生成参考文献 | 撰写论文 paper
  • 网站快速收录:如何优化网站音频内容?
  • Kubeflow——K8S的机器学习利器
  • 人工智能基础知识速成 - 机器学习、深度学习算法原理及其实际应用案例
  • 2025年最新Stable Diffusion 新手入门教程,安装使用及模型下载
  • 【鸿蒙HarmonyOS Next实战开发】Web组件H5界面与原生交互-抽奖页面
  • Fastdds学习分享_xtpes_发布订阅模式及rpc模式
  • unity报错不存在类型或者命名空间
  • Java集合概述(Ⅱ)
  • 企业资金管理-司库(Treasury)
  • RESTful API的设计原则与这些原则在Java中的应用
  • MQTT实战之在vue和java中使用
  • 编程语言中制表符的打印和输出@C#为例进行说明
  • 人类心智逆向工程:AGI的认知科学基础
  • 04树 + 堆 + 优先队列 + 图(D1_树(D15_哈夫曼树/霍夫曼树))
  • 算法与数据结构(合并有序链表)
  • Vue.js 如何选择合适的组件库
  • Spring PropertyPlaceholderConfigurer多配置问题
  • Verilog基础(三):过程
  • INA226的初次使用
  • Java基础学习笔记-标识符、变量、常量、关键字
  • 【C++】Lambda表达式