markRaw() 标记对象永不代理

最后更新:2026-10-22

markRaw() 标记对象永不代理

markRaw() 标记对象后,即使被放进响应式结构也不会被代理,适合第三方实例或大型静态数据。

分组响应式·进阶
类型API
作用域组件内
Vue 版本3.0+
SSR 支持支持

📝 语法

const chart = markRaw(new Chart(el, opts))
const state = reactive({ chart })   // chart 不会被代理

⚙️ 参数

value对象(会被打上内部标记)

返回值:该对象本身

▶ 示例

修改下面的代码,在预览区实时查看效果:

输出:

显示「被代理?false」——标记生效。

💡 要点

💡 提示 第三方类实例(图表、编辑器、地图)放进响应式状态前先 markRaw,避免代理引发的诡异行为。
⚠️ 注意 标记不可逆且对象不响应:需要它跟随变化时不能用 markRaw。
ℹ️ 说明 适合大而静态的数据(如城市列表),避免无意义的代理开销。
更多案例即将上线。

📚 相关教程

❓ 常见问题

Q 和 shallowRef 的区别?
A shallowRef 是“只有整体替换响应”,markRaw 是“这个对象永不代理”——前者管外层,后者管具体对象。
Q 用了它数据还会更新吗?
A 不会:该对象不在响应式系统内,改动不触发渲染。
Q 能标记后取消吗?
A 不能,标记不可逆;需要响应式时请改存代理副本。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏