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

vue中的this.$set

在 Vue 2 中,this.$set 是一个用于响应式地添加新属性到已有对象的全局 API。它的主要作用是解决 Vue 无法检测到对象属性添加或删除的限制(由于 Vue 2 的响应式系统基于 Object.defineProperty 实现)。


1. 为什么需要 this.$set

在 Vue 2 中,直接给对象添加新属性(如 this.obj.newProperty = value不会触发视图更新,因为 Vue 无法拦截这种动态添加的属性变化。


2. 语法

this.$set(target, propertyName, value)
  • target:目标对象(必须是响应式对象,如 Vue 实例的 data 或 Vuex 的 state)。
  • propertyName:要添加的新属性名(字符串或 Symbol)。
  • value:新属性的值。

3. 示例

场景 1:动态添加对象属性
// 错误写法(不会触发视图更新)
this.user.age = 25;// 正确写法(使用 $set)
this.$set(this.user, 'age', 25);
场景 2:动态更新数组索引

虽然 Vue 2 对数组的响应式处理有类似限制(无法直接通过索引修改数组,如 this.arr[0] = newValue),但 $set 也可以用于数组:

// 错误写法
this.items[0] = { name: 'New Item' };// 正确写法
this.$set(this.items, 0, { name: 'New Item' });

4. 替代方案(Vue 3 及 Composition API)

在 Vue 3 中,响应式系统改用 Proxy不再需要 $set,因为动态添加属性会自动被追踪:

// Vue 3 中直接添加即可
this.user.age = 25; // 会自动触发视图更新

5. 注意事项

  • 仅对响应式对象有效:如果 target 是非响应式对象(如普通字面量),$set 无效。
  • 优先使用 Vue.set:在非组件上下文(如普通函数)中,使用 Vue.set(obj, key, value)
  • 数组方法:对于数组,优先使用 Vue 重写的响应式方法(如 pushsplice)。

总结

Vue 版本是否需要 $set原因
Vue 2✅ 需要响应式系统基于 defineProperty
Vue 3❌ 不需要响应式系统基于 Proxy

在 Vue 2 中,遇到动态添加属性或数组索引更新的场景,记得用 this.$set

http://www.dtcms.com/a/283944.html

相关文章:

  • 在分布式系统中,如何保证缓存与数据库的数据一致性?
  • LVS实验
  • 板凳-------Mysql cookbook学习 (十一--------12)
  • LVS集群
  • Docker实战:使用Docker部署IT工具箱Team·IDE
  • Android15系统实现刷机防呆功能
  • Flutter在Android studio运行出现Error: Entrypoint is not a Dart file
  • C++网络编程 2.TCP套接字(socket)编程详解
  • 微信小程序列表数据上拉加载,下拉刷新
  • ASP .NET Core 8实现实时Web功能
  • Python 网络爬虫 —— 提交信息到网页
  • AI算法之图像识别与分类
  • 电力载波通信技术(PLC)发展全解析:从历史演进到未来趋势
  • RabbitMQ概述和工作模式
  • 永磁同步电机MTPA与MTPV曲线具体仿真实现
  • Python学习之——序列化与反序列化
  • 常用的100个opencv函数
  • [RAG] LLM 交互层 | 适配器模式 | 文档解析器(`docling`库, CNN, OCR, OpenCV)
  • 加速度传感器方向校准方法
  • RGBA图片格式转换为RGB格式(解决convert转换的失真问题)
  • OpenCV中VideoCapture 设置和获取摄像头参数和Qt设计UI控制界面详解代码示例
  • (四)OpenCV——特征点检测与匹配
  • 分布式分片策略中,分片数量的评估与选择
  • MacOS安装linux虚拟机
  • GPU的barrier
  • OpenCV中常用特征提取算法(SURF、ORB、SIFT和AKAZE)用法示例(C++和Python)
  • Linux的Ext系列文件系统
  • 一文掌握Harbor的配额管理和GC机制
  • Kubernetes架构原理与集群环境部署
  • VMware Workstation Pro 17下载安装