0

0

Vue 响应式数据 markRaw 怎么用?教你如何跳过不需要劫持的数据

冷漠man

冷漠man

发布时间:2026-03-18 10:05:34

|

557人浏览过

|

来源于php中文网

原创

markRaw的作用是预先标记对象跳过Vue响应式处理,适用于第三方实例、静态配置、超大结构数据等无需响应式的场景,必须在进入reactive前调用,不可用于已响应式对象。

vue 响应式数据 markraw 怎么用?教你如何跳过不需要劫持的数据

markRaw 的作用很直接:告诉 Vue “这个对象别管,不用转成响应式”。它不是用来“取消”已有的响应式,而是提前打个标记,让 Vue 在后续创建响应式状态时主动跳过它。

什么时候该用 markRaw?

核心判断标准就一个:这个对象你确定它永远不会变,或者变了也不需要更新视图

  • 第三方库的实例,比如 new ECharts(dom)new Map()axios.create()
  • 静态配置或常量,比如 { API_URL: '/api' }['Draft', 'Published']
  • 超大结构的数据,比如上万节点的树形数据、地理坐标集、离线字典表
  • DOM 元素、组件实例、函数等本就不该被响应式系统处理的对象

怎么写?基本用法很简单

直接把目标对象传给 markRaw(),它会原样返回,并打上 __v_skip: true 标记:

import { markRaw, reactive } from 'vue'
// 标记一个不可变配置
const STATUS_MAP = markRaw({
  1: '待审核',
  2: '已通过',
  3: '已拒绝'
});
// 即使放进 reactive,也不会被代理
const state = reactive({
  statusOptions: STATUS_MAP,
  user: { name: '张三' }
});
console.log(state.statusOptions === STATUS_MAP); // true
state.statusOptions[4] = '已撤回'; // 不触发更新,也不该这么做

和 toRaw 完全不是一回事

markRaw 是事前声明,像贴一张“勿扰”标签;toRaw 是事后解包,像拆开一个已经包好的礼物。两者目的不同、时机不同、不能互相替代。

Ai好记
Ai好记

强大的AI音视频转录与总结工具

下载

立即学习前端免费学习笔记(深入)”;

  • 你不能对普通对象(非 reactive/ref 创建的)调用 toRaw —— 它会直接返回原对象,没意义
  • 你也不能用 markRaw 去“修复”一个已经被 reactive 包裹过的对象 —— 标记必须在进 reactive 之前做
  • 常见误区:以为 markRaw 能让已有响应式对象“变回普通对象”,其实不能

性能提升真的明显吗?

是的,尤其对大型数据。Vue 在构建响应式时会对对象递归遍历并建立 Proxy。markRaw 后,整个子树都被跳过。

比如渲染一棵 5000 节点的树:
- 不加 markRaw:Vue 遍历全部节点建代理,耗时可能 184ms
- 加了 markRaw:只代理根 state 对象本身,树数据完全跳过,耗时降到约 17ms

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
ECharts是什么
ECharts是什么

ECharts是基于JavaScript的开源可视化库,能够帮助开发者轻松地实现各种复杂的数据可视化效果,提供了丰富的图表类型和交互功能。本专题为大家提供ECharts是什么的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.08.04

echarts自适应大小设置
echarts自适应大小设置

使用ECharts的自适应大小设置可以使图表能够根据不同屏幕尺寸和设备进行自适应。一种是使用resize事件,在图表容器大小改变时重新渲染图表;另一种是使用CSS样式,通过设置图表容器的宽度和高度为百分比值,使图表容器根据父元素的大小进行自适应。根据实际需求选择合适的方法,可以使图表在不同设备上都能够良好地显示和交互 。

489

2023.09.13

vue.js为什么报错
vue.js为什么报错

vue.js报错的原因:1、语法错误;2、组件使用不当;3、数据绑定问题;4、生命周期钩子使用不当;5、插件或依赖问题;6、路由配置错误;7、异步操作处理不当等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

129

2024.03.11

vue.js插槽有哪些用
vue.js插槽有哪些用

vue.js插槽的作用:1、提高组件的可重用性;2、实现组件的灵活布局;3、实现组件间的数据传递和交互;4、促进组件的解耦和模块化。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

187

2024.03.11

vue.js怎么带参数跳转
vue.js怎么带参数跳转

vue.js带参数跳转的方法:1、定义路由;2、在组件中使用路由参数;3、进行带参数的跳转。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.03.11

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1571

2023.10.24

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

565

2023.09.20

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

77

2025.09.05

抖漫入口地址合集
抖漫入口地址合集

本专题整合了抖漫入口地址相关合集,阅读专题下面的文章了解更多详细地址。

17

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 9.7万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号