当Vue数据发生改变时会发生什么 | 青训营

96 阅读2分钟

当数据改变时:

  • 数据更新:首先,vue会通过 计算属性,方法,watcher或者直接赋值 更新数据模型中相应的数据或者属性。
  • 依赖追踪:Vue将追踪被更新的属性或者变量,并确定与之相关的依赖关系,在模板中使用了这些属性与变量的地方,vue将建立起响应式的关联
  • 虚拟 DOM 重新渲染:Vue 使用虚拟 DOM(Virtual DOM)来高效地跟踪页面上的变化。当数据发生改变时,Vue 会根据新的数据状态生成一个新的虚拟 DOM 树。
    • Vue会根据最新的数据状态生成一个新的虚拟DOM树。
    • Vue会拿新的虚拟DOM树和旧的虚拟DOM树进行比较,找出两者之间的差异。
    • Vue会根据差异对实际的DOM进行增删改操作,以更新页面。
    • 最终,页面反映出最新的数据状态。
  • 对比更新:Vue 会将新旧虚拟 DOM 树进行对比,并找出需要进行更新的部分。
  • 更新视图:根据对比结果,Vue 会将需要更新的部分,如 DOM 元素或组件,进行相应的更新操作。这可能包括插入、更新或删除 DOM 元素,以保持视图与数据模型的同步。
  • 触发生命周期钩子函数:如果有相关的生命周期钩子函数,Vue 会在适当的时机调用它们。例如,在组件中,Vue 会在更新完成后调用 updated 钩子函数:在Vue组件中,这意味着当组件的数据发生变化,视图重新渲染完成之后,updated钩子函数会被触发。
  • 触发监听器或 Watcher:如果有定义侦听属性变化的监听器或 Watcher,Vue 会在数据更新后触发它们,执行相应的回调函数。当属性的值发生改变时,对应的回调函数将被调用,并且会传入新值和旧值作为参数,可以利用监听器或Watcher来在数据更新后执行自定义的操作,比如更新其他相关的数据、调用方法或者触发其他事件。