卸载聚合物页面

时间:2017-07-04 08:27:01

标签: javascript polymer polymer-2.x

我将POCing聚合物与Redux和Polymer(2.0)入门套件结合使用,其中包括iron-pages组件,以及其中包含的页面的延迟加载。< / p>

但是,我注意到他们实际上并不是这样的页面,而是更像是老式tab bar,其中所有内容都加载到DOM中但使用CSS隐藏。调用connectedCallback()生命周期方法,但disconnectedCallback()不是因为组件永远不会被卸载。

这感觉就像记忆和性能泄漏给我。我们将实现的一个用例是通过websockets经常更新的数据;我想避免的是它在后台更新。对于桌面我觉得它会很好,但对于移动设备来说,它的表现会很糟糕。

其次,我不必实施手动生命周期管理;美国国立卫生研究院的气味。

那么,它归结为:在Polymer和/或分页Web组件中是否有组件卸载或可靠的生命周期回调?

编辑:我看到Unloading Polymer pages有同样的问题 - 虽然没有答案。

编辑2:我发现在iron-pages上也存在一个问题。

1 个答案:

答案 0 :(得分:0)

正如相关问题所述,您可以使用带有<template is="dom-if">属性的条件模板(restamp)。使用restamp时,如果条件为false,则会删除元素,因此会调用disconnectedCallback

您可以使用一组dom-if模板而不是铁页元素。

正如您所指出的,iron-pages元素更像是一个标签面板,当基础视图相对较轻时,或者您希望人们经常来回切换并且不想要支付重建它们的成本。然而,在许多情况下,当元素占用大量内存或(如在您的情况下)只要它们在页面上工作时,就可以使用条件模板了。