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

vue2 $set 后期添加响应式数据的问题,使用vm.$set()

文章目录

  • 后期添加数据的问题
    • 后期给Vue的实例添加的属性,会有响应式吗?
    • 避免在运行时向vm或其根$data添加响应式
  • 对象的响应式处理
    • 想给后期追加的属性添加响应式处理的,有以下俩个方法:
  • 数组的响应式处理
    • 解决方案一:
    • 解决方案二:
    • 演示:

后期添加数据的问题

后期给Vue的实例添加的属性,会有响应式吗?

  • 后期给Vue实例vm动态的追加的一些属性,不会添加响应式处理

  • 例如:vm.$data.a = 77

  • 通过这种直接方式后期给vm追加的属性并没有添加响应式处理

避免在运行时向vm或其根$data添加响应式

不能直接给vm / vm.$data 追加响应式属性。只能在声明时提前定义好

例如:

Vue.set(vm.$data,'email','tom123@.com')
Vue.set(vm,'email','tom123@.com')

对象的响应式处理

想给后期追加的属性添加响应式处理的,有以下俩个方法:

Vue.set() 、 vm.$set()

语法:

Vue.set(目标对象, 属性名, 属性值)
vm.$set(目标对象, 属性名, 属性值)

示例:

Vue.set(vm.$data.a,'email','jack126@.com')
Vue.set(vm.a,'email','jack126@.com')
vm.$set(vm.a,'email','tom123@.com')

数组的响应式处理

通过数组的下标去修改数组中的元素,默认情况下是没有添加响应式处理

解决方案一:

通过 Vue.set() 、 vm.$set() 去解决

vm.$set(数组对象, 下标, 值)  vm.$set(vm.users,0,'杰克')
Vue.set(数组对象, 下标, 值)  Vue.set(vm.users,0,'杰克')

解决方案二:

在Vue当中,通过以下的7个方法来给数组添加响应式处理

  • push()
  • pop()
  • reverse()
  • splice()
  • shift()
  • unshift()
  • sort()

示例:

vm.users.push('888')

演示:

演示通过数据下标更改数组,页面无法出现响应式

 <script src='https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js'></script><div id ="root">{{users}}</div><script>let vm = new Vue({el: '#root',data(){return {users: ["jack", "lucy", "james"]}},});vm.users[0]='tom'console.log(vm.users[0])  //tom (打印出来是tom,说明数据已经改变,但是视图未改变,不是响应式的)// 数组的push方法vm.users.push('tim') console.log(vm.users)  // [ "tom", "lucy", "james", "tim" ] (视图改变说明是响应式数据)vm.$set(vm.users, 0 ,'汤姆')   // (视图改变说明是响应式数据)Vue.set(vm.users, 1 ,"露西")   // (视图改变说明是响应式数据)</script>
http://www.lryc.cn/news/356499.html

相关文章:

  • 笔记-X86下用Docker运行ARM64编译Libreoffice
  • 力扣:92. 反转链表 II(Java)
  • [less配置]vue2引入less
  • 物理内存与虚拟内存的区别
  • MySQL数据库案例实战教程:数据类型、语法与高级查询详解
  • 操作系统——用户态与内核态、同步与异步、阻塞与阻塞
  • C# VSTO读取Excel单元格Value、Value2
  • 如何快速从手动测试转向自动化测试
  • 【Linux+Docker】修改Docker容器中的hosts文件
  • 在VS Code中进行Java的单元测试
  • 国内信创web中间件生态
  • CSS中的writing-mode属性:解锁文本布局新维度
  • SQL面试题练习 —— 波峰波谷
  • 检索模型预训练方法:RetroMAE
  • OpenHarmony实战开发——宿舍全屋智能开发指南
  • 等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用
  • Python 读取.shp文件并生成图幅编号
  • 【算法】位运算算法——判断字符是否唯一
  • AAAI2024 基于扩散模型 多类别 工业异常检测 DiAD
  • JavaEE-Spring Controller(服务器控制以及Controller的实现和配置)
  • 页面导出PDF,非可视区域如何解决
  • Android UI:ViewTree: 监听
  • 【光伏干货】光伏无人机巡检步骤
  • 『大模型笔记』从头开始代码构建GPT!
  • idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入
  • JavaScript数据类型与转换
  • 三十、openlayers官网示例解析Double click, Drag and Zoom——第二次点击鼠标拖拽缩放地图效果、取消地图双击放大事件
  • 前端基础入门三大核心之网络安全篇:TLS/SSL的魔法之旅
  • Flutter 中的 SnackBarAction 小部件:全面指南
  • Point-Nerf 理论笔记和理解