美文网首页
vue 响应式与数据更新,dom更新与安全抓取

vue 响应式与数据更新,dom更新与安全抓取

作者: LUGY | 来源:发表于2019-06-01 18:43 被阅读0次

响应式与数据更新

在vue中,需要展示在页面上的数据必须在data中声明,没有在data中声明的属性将不会被vue感应。

vue会使用Object.defineProperty 方法 将data中的属性变成getter/setter型属性,每一个vue组件会对应一个watcher,它会在组件渲染的过程中把“接触”过的数据属性记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

虽然在初始化之后,不能去声明data中的属性(对于已经创建的实例,Vue 不允许动态添加根级别的响应式属),

但可以对嵌套对象中添加属性,在开发过程中,往往会遇到一个问题,即某个嵌套对象中增加或删除了某个属性,但页面表现上,对应元素没有生成或被删除。出现这个问题的原因在于vue无法检测到对象属性的添加和删除,如果要添加或删除属性,要生成新对象,替换这个老对象 ,示例:

this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

vue对dom的更新是一个异步行为,如上述代码,并不是执行了这一句,someObject对应的dom中的值就会立即改变,如果在这句后面直接抓取dom取值,那么取得的还是旧值。 在实际开发中,如果混合使用了data数据更新,与dom抓取取值,很可能出现值不是最新的情况。

这个问题的根本原因就是vue对dom的更新是一个异步行为,dom并没有马上更新,实际上,vue在对数据更新时,会创建一个异步队列,一次性更新同一个事件循环中设置的所有数据,组件会在下一个事件循环更新(即异步队列中的数据会在下一个事件循环中更新)。vue提供了nextTick(),该方法接收一个回调函数,回调函数将在 DOM 更新完成后被调用,即可保证回调中抓取的dom值为最新值。

相关文章

  • vue 响应式与数据更新,dom更新与安全抓取

    响应式与数据更新 在vue中,需要展示在页面上的数据必须在data中声明,没有在data中声明的属性将不会被vue...

  • miniVue源码学习

    Vue -- MVVM 数据响应式 模板引擎 渲染--真实DOM 监听数据变化、并在视图更新 Object.def...

  • $nextTick原理深度解析

    Vue 实现响应式并不是数据发⽣变化之后 DOM ⽴即变化,⽽是按⼀定的策略进⾏ DOM 的更新。$next...

  • 理解Vue中的nextTick的作用

    Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。nextTick...

  • vue中nextTick()的理解及使用场景说明源码解析

    原理 异步说明 Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。...

  • 2022-03-10

    一 vue vue的优点? 渐进式 组件化开发 虚拟dom 响应式数据 单页面路由 数据与试图分开用户体检好,内容...

  • Vue源码解读(五):render和VNode

    Vue 2.0 相比 Vue 1.0 最大的升级就是利用了虚拟DOM。 在 Vue 1.0 中视图的更新是纯响应式...

  • Vue数据响应式

    1.什么是数据响应式 在 Vue 中,当 data 中的数据发生改变时,视图会进行更新,这就是Vue数据响应式的概...

  • vue 数据更新 dom不渲染

    场景:获取接口数据,更新dom问题:数据更新了,dom未渲染代码: 原因:vue的dom更新是异步的,即当sett...

  • vue 双向绑定原理实现

    实现 mvvm 主要包含两个方面,数据变化更新视图,视图变化更新数据 Vue 数据双向绑定(即数据响应式),是利用...

网友评论

      本文标题:vue 响应式与数据更新,dom更新与安全抓取

      本文链接:https://www.haomeiwen.com/subject/gpgotctx.html