news 2026/6/23 16:01:22

【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/19 10:26:11

Zotero-SciPDF终极指南:一键获取学术文献PDF的完整解决方案

Zotero-SciPDF终极指南:一键获取学术文献PDF的完整解决方案 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf Zotero-SciPDF是专为Zotero 7设计的智能插件&…

作者头像 李华
网站建设 2026/6/23 14:45:10

VMware macOS解锁工具终极指南:轻松打造跨平台开发环境

VMware macOS解锁工具终极指南:轻松打造跨平台开发环境 【免费下载链接】unlocker 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 你是不是曾经想在VMware上运行macOS系统,却因为系统限制而束手无策?别担心,今…

作者头像 李华
网站建设 2026/6/23 10:29:42

基于Vivado2025的Verilog综合行为全面讲解

深入理解 Vivado 2025 的 Verilog 综合行为:从代码到硬件的精准映射在 FPGA 设计中,我们写的每一行 Verilog 代码,并不会“原样”变成电路。它必须经过一个关键环节——逻辑综合(Logic Synthesis),才能转化…

作者头像 李华
网站建设 2026/6/23 7:47:03

Hitboxer SOCD清理器:终极游戏按键冲突解决方案

还在为格斗游戏中方向键冲突而烦恼吗?当你在激烈对局中同时按下左右方向键,角色却原地不动或随机移动,这种操作延迟足以让你错失关键时机。Hitboxer SOCD清理器专为解决这一痛点而生,为键盘玩家带来专业级的操作精准度。 【免费下…

作者头像 李华
网站建设 2026/6/22 21:46:23

视频PPT智能提取:零基础快速上手完整教程

视频PPT智能提取:零基础快速上手完整教程 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 想要从教学视频、会议录像中快速提取PPT课件内容吗?视频PPT提取工具…

作者头像 李华
网站建设 2026/6/23 3:50:45

图解说明常见工控设备USB串口驱动安装流程

一文搞懂工控设备USB转串口驱动安装:从识别到部署的实战指南 在工业自动化现场,你是否曾遇到这样的场景——手握PLC编程电缆、调试HMI面板或读取传感器数据时,电脑却提示“ 找不到串口 ”?设备管理器里赫然显示一个带黄色感叹号…

作者头像 李华