Ionic-framework: VirtualScroll não funciona com Immutable.List

Criado em 1 set. 2016  ·  3Comentários  ·  Fonte: ionic-team/ionic-framework

Breve descrição do problema:

Tentar substituir *ngFor="let item of items" pela alternativa virtualScroll não renderiza nenhum item (nada adicionado no dom) ou cada virtualItem estará vazio se items for um Immutable.List. Immutable.List é enumerável e, portanto, funciona bem com ngFor e, como angular2 e imutabilidade funcionam tão bem juntos, acredito que deve funcionar.

Que comportamento você está esperando?

Renderizar itens de uma lista imutável corretamente

Qual versão do Ionic? 1.x ou 2.x
Ionic 2 Beta 11

Plunker que mostra um exemplo do seu problema

http://plnkr.co/edit/2c5ZIyDyGb12kwtQ4jXW?p=preview

Execute ionic info no prompt do terminal / cmd: (cole a saída abaixo)
Cordova CLI: 6.3.0
Versão Gulp: CLI versão 3.9.1
Gulp local: versão local 3.9.1
Versão do Ionic Framework: 2.0.0-beta.11
Versão Ionic CLI: 2.0.0-beta.36
Versão Ionic App Lib: 2.0.0-beta.19
versão ios-deploy: 1.8.6
versão ios-sim: 5.0.6
SO: Mac OS X El Capitan
Versão do nó: v4.3.1
Versão do Xcode: Xcode 7.3.1 Versão de compilação 7D1014

stale issue

Comentários muito úteis

Para adicionar a esse problema, após RC0 que final angular foi usado, fornecer uma matriz de objetos imutáveis ​​em VirtualScroll leva a uma degradação de desempenho severa, pois VirtualScroll faz seu próprio acionamento de detecção de mudança que leva a uma comparação profunda (através de devModeEqual) dos objetos imutáveis ​​que está apenas levando uma quantidade absurda de tempo.
Acredito que o VirtualScroll deve ser compatível com a estratégia de detecção de alterações OnPush para oferecer suporte a objetos imutáveis.

ATUALIZAÇÃO 20/04/17:
Acredito que não seja mais o caso, já que as comparações de itens estão usando comparações de diff Angular4.0 que levam em consideração itens imutáveis, mas os problemas de enumeração de lista dentro do Virtual Scroll ainda permanecem inalterados.

Todos 3 comentários

Para adicionar a esse problema, após RC0 que final angular foi usado, fornecer uma matriz de objetos imutáveis ​​em VirtualScroll leva a uma degradação de desempenho severa, pois VirtualScroll faz seu próprio acionamento de detecção de mudança que leva a uma comparação profunda (através de devModeEqual) dos objetos imutáveis ​​que está apenas levando uma quantidade absurda de tempo.
Acredito que o VirtualScroll deve ser compatível com a estratégia de detecção de alterações OnPush para oferecer suporte a objetos imutáveis.

ATUALIZAÇÃO 20/04/17:
Acredito que não seja mais o caso, já que as comparações de itens estão usando comparações de diff Angular4.0 que levam em consideração itens imutáveis, mas os problemas de enumeração de lista dentro do Virtual Scroll ainda permanecem inalterados.

Este ainda é um problema no Ionic (v3.0.1) mais recente e aqui está um plunker atualizado que demonstra o problema mais uma vez.
http://plnkr.co/edit/2Pz0fIX9MV7er12UaFRf?p=preview

Nosso aplicativo usa conjuntos e listas imutáveis ​​em todos os lugares, mas devido ao fato de termos que exibir milhares de registros em uma lista rolável, temos que usar a rolagem virtual. Isso requer que todos os dados sejam convertidos de volta em objetos mutáveis ​​(muito caro) e todos os componentes usados ​​dentro do pergaminho virtual também aceitem objetos mutáveis.
Desta forma, ficamos meio presos, pois temos que usar a rolagem virtual para melhor desempenho, mas estamos degradando o desempenho por tentarmos ser compatíveis com a rolagem virtual.

Obrigado pelo problema! Este problema está sendo encerrado devido à inatividade. Se isso ainda for um problema com a versão mais recente do Ionic, crie um novo problema e certifique-se de que o modelo esteja totalmente preenchido.

Obrigado por usar o Ionic!

Esta página foi útil?
0 / 5 - 0 avaliações