我发现了VueJS,但我并不完全理解updated
和观察者之间的区别。
更新的钩子
这是一个生命周期钩子。根据官方文档,每当数据更改时都会触发它。因此,每当更新prop
或data
(值,而不仅仅是指针(时,都会调用updated
。
观察家
在文档中,将观察程序与计算属性进行比较。但是在哪些情况下最好使用更新而不是观察者?
似乎在这两种情况下,调用回调时 DOM 都不会更新(如果我们想操纵 DOM 中的更改,则需要nextTick()
(。我看到的唯一区别是,只有当一个精确的属性(或数据(在始终调用updated
的地方更新时,才会触发watchers
。
如果我们可以更准确(watchers
(,我无法弄清楚每当数据更改时更新(updating
(的优点是什么。
这是我的想法。
谢谢:)
围绕更新的生命周期挂钩响应DOM 中的更改。观察程序响应数据中的更改。DOM 更改通常是为了响应数据更改,但它们可能不是相关组件拥有的数据。可以使用updated
的一个示例是注意到槽内容已更新。
我认为与观察者更好的类似生命周期钩子可能是beforeUpdate钩子。updated
钩子在虚拟 DOM 重新渲染后调用,而beforeUpdate
钩子在虚拟 DOM 重新渲染之前调用。您可以在链接到的图表上看到此内容的可视化表示形式。
在哪些情况下最好使用更新而不是观察者?(...)如果我们可以更准确(
watch
(,我无法弄清楚每当数据更改时更新(updated
(的优点是什么。
文档说,如果可以通过这种方式实现目标,您应该首选观察程序或计算属性,而不是updated
。我的理解是,包含updated
钩子是为了允许用户监视对虚拟 DOM 的任何更改(见下文(。
这是 Vue 2.0 发行说明中关于watch
与updated
:
现在,通过
vm.$watch
创建的用户观察程序会在关联的组件重新渲染之前触发。这使用户有机会在组件重新渲染之前进一步更新其他状态,从而避免不必要的更新。例如,您可以监视组件道具,并在道具更改时更新组件自己的数据。要在组件更新后对 DOM 执行某些操作,只需使用
updated
生命周期挂钩。