我将POCing聚合物与Redux和Polymer(2.0)入门套件结合使用,其中包括iron-pages
组件,以及其中包含的页面的延迟加载。< / p>
但是,我注意到他们实际上并不是这样的页面,而是更像是老式tab bar,其中所有内容都加载到DOM中但使用CSS隐藏。调用connectedCallback()
生命周期方法,但disconnectedCallback()
不是因为组件永远不会被卸载。
这感觉就像记忆和性能泄漏给我。我们将实现的一个用例是通过websockets经常更新的数据;我想避免的是它在后台更新。对于桌面我觉得它会很好,但对于移动设备来说,它的表现会很糟糕。
其次,我不必实施手动生命周期管理;美国国立卫生研究院的气味。
那么,它归结为:在Polymer和/或分页Web组件中是否有组件卸载或可靠的生命周期回调?
编辑:我看到Unloading Polymer pages有同样的问题 - 虽然没有答案。
编辑2:我发现在iron-pages上也存在一个问题。
答案 0 :(得分:0)
正如相关问题所述,您可以使用带有<template is="dom-if">
属性的条件模板(restamp
)。使用restamp
时,如果条件为false,则会删除元素,因此会调用disconnectedCallback
。
您可以使用一组dom-if
模板而不是铁页元素。
正如您所指出的,iron-pages
元素更像是一个标签面板,当基础视图相对较轻时,或者您希望人们经常来回切换并且不想要支付重建它们的成本。然而,在许多情况下,当元素占用大量内存或(如在您的情况下)只要它们在页面上工作时,就可以使用条件模板了。