响应式是一种设计模式。

页面响应式布局就是根据页面缩放大小调整布局,数据响应式就是代码根据数据变化作出反应

深入响应式原理 — Vue.js​cn.vuejs.org

简单来说,当我们把一个 JavaScript 对象传入 Vue 实例作为data选项时,Vue将遍历此对象所有的 property,使用Object.defineProperty把这些 property 全部转为getter/setter,并将property记录为依赖。 Vue 追踪这些依赖,在其被访问和修改时通知变更。

具体实现:

每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

注意:

由于 JavaScript 的限制,Vue不能检测数组和对象的变化。

  • 对象:Vue 无法检测 property 的添加或移除。
var vm = new Vue({data:{a:1,someObject:{}}
})// `vm.a` 是响应式的vm.b = 2
// `vm.b` 是非响应式的

我们无法动态添加根级别的响应式 property。但是可以使用 Vue.set(object, propertyName, value) 方法向嵌套对象添加响应式 property。

Vue.set(vm.someObject, 'b', 2)
//或者
vm.$set(vm.someObject,'b',2)// vm.$set 实例方法是全局 Vue.set 方法的别名

  • 数组:Vue 不能检测以下数组的变动:

    • 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
    • 当你修改数组的长度时,例如:vm.items.length = newLength
var vm = new Vue({data: {items: ['a', 'b', 'c']}
})
vm.items[1] = 'x' // 不是响应性的,解决:vm.$set(vm.items, indexOfItem, newValue)
vm.items.length = 2 // 不是响应性的,解决:vm.items.splice(newLength)

vue 获取数组长度_Vue数据响应式相关推荐

  1. vue中数组的七个响应式方法

    vue中数组的七个响应式方法 起因: ​ 在使用vue实习中,通过数组的索引改变了数组中的值,测试时发现,更改成功了,但是试图无响应. 原因: *通过索引值修改数组元素,不是响应式方法* // 以下代 ...

  2. chrome vue 未响应_VUE数据响应式

    响应式顾名思义就是对外界的触发变化做出响应. 在vue中,vue的data是响应式的,我们会很好奇,为什么传入new Vue({})中的data在做出变化的时候,UI中相应地显示的数据也会响应做出变化 ...

  3. vue set方法_Vue 数据响应式

    数据响应式是指当数据改变后,会通知到使用该数据的代码.例如,视图渲染中使用了数据,数据改变后,视图也会自动更新. new Vue内部对data的代理和监听 data的bug 由于使用了Object.d ...

  4. vue 获取数组索引_vue 重塑数组之修改数组指定index的值操作

    如下所示: vm.items[indexofitem] = newvalue vue不能检测数组的变动 想要实现可以使用vue的set方法 this.$set(this.items,indexofit ...

  5. vue 获取数组索引_Vue - 数组方法

    变异方法(修改原有数组) push() pop() shift() unshift() splice() sort() reverse() Vue对数据的处理一般都是响应式的,而原生JS数组方法对数据 ...

  6. vue中数组长度_vue.js - 如何获得动态数组的数组长度 - SO中文参考 - www.soinside.com...

    您知道从API加载所有包含的数据后如何获取数字行问题数组.我需要为分页表设置totalRows,但是this.questions = this.questions.lenght 无效,返回null.e ...

  7. 数据响应式的原理(简单理解 为了面试)

    首先 什么是数据响应式? vue里面的所谓的数据响应式指的是数据变了,视图跟着变 那么 数据响应式式的原理又是什么呢?(这里浅度剖析一下) 1.就是利用Object.defineProperty数据劫 ...

  8. vue 数组长度_深入理解Vue的数据响应式

    什么是响应式 当一个物体对外界的变化做出反应就叫响应式的,如"我打你一拳,你会喊疼". Vue的数据响应式 就是对数据做出改变时,视图上也会做出相应的变化. 举个例子 1const ...

  9. vue data数据修改_VUE的数据响应式

    什么是数据响应式? const vm =newVUE({data:{n:0}}) 上面的代码中,如果修改vm.n,那么UI中的n就会通过变化来响应我,这就是数据响应式. VUE对data做了什么? 当 ...

最新文章

  1. 1.7-bzip2和bunzip2
  2. “虎力全开”采购季,存储产品已就位
  3. [IDDFS+背包] 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring
  4. 【转】SQL SERVER 获取存储过程返回值
  5. Android 自动更新之状态栏下载状态和进度
  6. 本地化记录日志(写文件)
  7. java根据经纬度计算距离
  8. 视频编码中的PAFF和MBAFF的区别 转自:http://blog.csdn.net/kerryhung/article/details/4433256...
  9. Unix/Linux环境C编程入门教程(14) Mandriva LinuxCCPP开发环境搭建
  10. ASP与JSP的比较
  11. 程序人生 - 汽车后视镜锁车自动折叠为啥失灵?
  12. 深空天体反差指数计算
  13. 支付宝小程序开发练习,显示自定义二维码(四)
  14. iOS读取通讯录功能
  15. 以太网io模块4-20mA转网口转TCP/IP西门子PLC扩展modbus模块
  16. 笑死:Welcome to Skip Thompson's Homepage
  17. 如何建立一个网站?规划、设计、目的、原则、宣传(一)
  18. 机器学习 之 生成式模型 VS 判别式模型
  19. B站(Bilibili) 视频的下载。
  20. 关于defer 的用法

热门文章

  1. 08、VUE计算属性
  2. Python 多线程中的 join() 和 setDaemon()
  3. 立体视觉--双目相机立体校正(Bouguet算法)
  4. 盲盒APP商城营销的演变
  5. 多线程之join方法
  6. ubuntu网卡突然失效
  7. linux c++贪吃蛇代码,贪食蛇源码c++
  8. ue编辑器c语言语法高亮文件,再见UE之VS Code初体验---实现远端Linux C开发配置,ue初体验...
  9. 虚拟机也能做服务器吗,虚拟机可以做服务器吗
  10. ASP cookies设置时间