news 2026/6/9 21:02:37

【vuejs】vm.$set() 的原理解析和方法以及应用场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【vuejs】vm.$set() 的原理解析和方法以及应用场景

1. Vue 响应式原理概述
Vue.js 是一个用于构建用户界面的渐进式框架,其核心特性之一是响应式系统。Vue 的响应式系统允许开发者声明性地描述一个应用的状态,而 Vue 会自动追踪状态的变化,并更新 DOM 以反映这些变化。

1.1 响应式数据的创建
Vue 使用 Object.defineProperty 来劫持数据对象的属性,为每个属性创建 getter 和 setter。当属性被访问或修改时,Vue 可以捕获这一行为,并触发视图的更新。

1.2 响应式系统的局限性
尽管 Vue 的响应式系统非常强大,但它也有局限性。Vue 不能检测到对象属性的添加或删除。这意味着如果在 Vue 实例创建后向其 data 对象添加新的属性,这些新属性不会触发视图的更新。

1.3 Vue.set() 和 vm.$set() 的作用
为了解决上述问题,Vue 提供了 Vue.set 和实例方法 vm.$set。这些方法允许开发者向响应式对象添加新的属性,并确保这些属性同样是响应式的,能够触发视图更新。使用 Vue.set 或 vm.$set 时,Vue 会智能地处理属性的添加,确保新属性同样具备响应性。

2. vm.$set() 方法介绍
2.1 vm.$set() 方法概述


vm.$set 是 Vue 实例的一个方法,它提供了一种在 Vue 实例的响应式对象上动态添加新属性的方式。当使用 vm.$set 向响应式对象添加新属性时,Vue 会确保这个新属性同样是响应式的,并且能够触发视图的更新。

2.2 vm.$set() 方法的使用场景
vm.$set 主要用于以下场景:

在 Vue 实例的 data 对象中动态添加属性。
当需要向深层嵌套的对象添加响应式属性时。
2.3 vm.$set() 方法的实现原理

vm.$set 的实现原理主要基于 Vue 的响应式系统。当调用 vm.$set 方法时,Vue 会执行以下步骤:

检查目标对象是否是响应式的,如果不是,则直接添加属性。
如果目标对象是响应式的,Vue 会通过内部的 defineReactive 方法来确保新属性也是响应式的。
更新依赖收集器,通知订阅者视图需要更新。

2.4 vm.$set() 方法与直接赋值的比较


直接赋值给响应式对象的新属性,Vue 无法检测到这一变化,因此不会触发视图更新。而使用 vm.$set 方法添加的新属性,Vue 能够检测到并触发视图更新,确保应用的响应性。

原文链接:https://blog.csdn.net/weixin_45046532/article/details/139527932

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 11:56:00

高效科研工作流的Zotero插件组合方案

想要在科研工作中实现科研效率提升和中文文献管理的完美结合吗?通过精心设计的Zotero插件组合,你可以打造一个真正高效的工作流。Jasmine插件作为中文文献管理的基础,与其他插件的协同使用能够让你的文献管理工作事半功倍!&#x…

作者头像 李华
网站建设 2026/6/8 23:13:57

XHS-Downloader:解决小红书内容下载难题的智能方案

你是否曾在小红书上看到心仪的图片或视频,却苦于无法快速保存?传统的截图裁剪方式不仅效率低下,还会损失画质和水印干扰。XHS-Downloader作为一款免费开源的小红书内容采集工具,通过AI技术实现了图文视频作品的无缝下载体验&#…

作者头像 李华
网站建设 2026/6/5 5:41:44

Minecraft数据编辑大师课:NBTExplorer让存档修改变得如此简单

Minecraft数据编辑大师课:NBTExplorer让存档修改变得如此简单 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 想要完全掌控你的Minecraft世界吗&#x…

作者头像 李华
网站建设 2026/6/8 13:57:29

VMware解锁工具终极指南:轻松在虚拟机中运行macOS系统

VMware解锁工具终极指南:轻松在虚拟机中运行macOS系统 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想要在普通PC上体验苹果macOS系统吗?VMware解锁工具Unlocker正是您需要的跨平台兼容解决方案。这款开…

作者头像 李华
网站建设 2026/6/5 5:19:57

5分钟掌握输入法词库转换:告别重复打字烦恼

5分钟掌握输入法词库转换:告别重复打字烦恼 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 还在为更换输入法时需要重新打字而烦恼吗?输入法词…

作者头像 李华
网站建设 2026/6/8 21:59:17

FGO-Automata:从手指酸痛到游戏自由的智能蜕变

FGO-Automata:从手指酸痛到游戏自由的智能蜕变 【免费下载链接】FGO-Automata 一个FGO脚本和API フェイトグランドオーダー自動化 项目地址: https://gitcode.com/gh_mirrors/fg/FGO-Automata 还记得那些深夜刷QP本时手指传来的酸胀感吗?作为一名…

作者头像 李华