2017-07-04 3 views
1

Ich habe POCing Polymer in Kombination mit Redux und dem Polymer (2.0) Starter-Kit, die unter anderem die iron-pages Komponente, sowie das verzögerte Laden der darin enthaltenen Seiten eingeführt.Entladen Polymer Seiten

Allerdings habe ich festgestellt, dass sie nicht wirklich Seiten als solche sind, sondern eher wie ein altmodisches tab bar, wo alle Inhalte in das DOM geladen, aber mit CSS versteckt. Die connectedCallback() Lifecycle-Methode wird aufgerufen, aber die disconnectedCallback() ist nicht, weil die Komponente nie entladen wird.

Das fühlt sich wie eine Erinnerung und Performance-Leck zu mir. Ein Anwendungsfall, den wir implementieren werden, ist ein häufig aktualisierendes Stück Daten über Websockets; Was ich vermeiden möchte, ist die Aktualisierung im Hintergrund. Für den Desktop wäre es okay, aber für das Handy wäre es für die Leistung schrecklich.

Zweitens, ich würde eher nicht manuelle Lebenszyklusverwaltung implementieren müssen; riecht nach NIH.

Also, was läuft darauf hinaus: Gibt es entweder Komponente entladen oder zuverlässige Lebenszyklus Rückrufe in Polymer und/oder eine Paging-Web-Komponente?

edit: Ich sehe Unloading Polymer pages hat die gleiche Frage - es ist jedoch unbeantwortet.

bearbeiten 2: Ich sehe, es gab ein Problem darüber auf iron-pages zu.

+0

In Verbindung stehend: https://stackoverflow.com/questions/38905931/polymer-deaktivierende-pages-when-their-not-in-view – alesc

Antwort

0

Wie die zugehörige Frage besagt, können Sie eine bedingte Vorlage (<template is="dom-if">) mit dem Attribut restamp verwenden. Mit restamp werden die Elemente entfernt, wenn die Bedingung falsch ist, so dass Ihre disconnectedCallback aufgerufen wird.

Sie könnten eine Reihe von dom-if Vorlagen anstelle des Iron-Seiten-Elements verwenden. Das Element iron-pages ähnelt eher einem Registerfeld und funktioniert gut, wenn die zugrunde liegenden Ansichten vergleichsweise hell sind, oder Sie erwarten, dass Benutzer häufig hin- und herwechseln und die Kosten für die Neuerstellung nicht übernehmen möchten Sie. In vielen Fällen jedoch, wenn die Elemente viel Speicher benötigen oder (wie in Ihrem Fall) funktionieren, solange sie sich auf der Seite befinden, ist eine bedingte Vorlage der richtige Weg.