ビューでのバインディング機能のパフォーマンスが低い

イゴール

私はAngularアプリを備えたionic4を持っていますが、componentAにもwebsocketを実装しています。componentA.html:

<div *ngFor="let item of myList">
   <div>{{ item.name }}</div>
   <div>{{ calcPrice(item.price) }}</div>
   <div>{{ calcDistance(item.distance) }}</div>
   <div>{{ calcAge(item.age) }}</div>
   <div>{{ setColor(item.color,item.name) }}</div>
</div>

ここにmyListのサンプルがあります:

[
  {...},
  {...},
  {...},
  {...},
...
]

myListは配列であり、通常は20個のアイテムが含まれていますが、これらのアイテムは私のWebSocketで更新されます。ページに入ると大きなパフォーマンスの問題に直面し、リストが約8項目を通過するとアプリが完全にフリーズするため、大規模な調査を開始し、ビューで関数を使用するのは悪い習慣であることがわかりました

記事:ここここ

私が使用するすべての関数には戻り値があり、それらの関数が計算などを行う必要があります。これをhtml内に配置すると、コードがダーティになり、保守が困難になります。

これを適切に機能させるために私は何をすべきですか?各アイテムにパイプを使用する必要がありますか?

編集:

これが私のhtmlで使用した関数の1つです

  calcVolum(item) {
    if (
      TestClass.startsWithA(item.name) &&
      !this.needHelp(item.name)
    ) {
      return (
        Number(item.price.replace(this.regexPts, '')) *
        Number(item.currentQuantity) *
        item.age
      );
    } else if (this.needHelp(item.name)) {
      return (
        Number(item.price.replace(this.regexPts, '')) *
        Number(item.currentQuantity) *
        item.dolptax *
        item.age
      );
    }

    return (
      Number(item.price.replace(this.regexR$, '').replace(',', '.')) *
      item.currentQuantity
    );
  }
bryan60

実行する必要があるときに実行されるようにコンポーネントを設定します。

次のような関数を記述します。

calculateItemValues(items) {
  return items.map(i => {
    return Object.assign({}, i,
      {
        priceCalc: this.calcPrice(i.price);
        // however many else you need
      }
    );
  });
}

必要なときはいつでも(アイテムが変更されたとき)、this.calcItems = this.calculateItemValues(this.items)rxjsmapステートメントのように、またはその内部が通常は最適な場所であると呼び、計算されたものを繰り返します。

<div *ngFor="let item of calcItems">
   <div>{{ item.name }}</div>
   <div>{{ item.priceCalc }}</div>
   <!-- whatever else you set -->
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カルーセルビューとリストビューのバインディングがXamarinフォームで機能しない

分類Dev

AWSコンピューティング最適化インスタンスのマルチコアパフォーマンスが低い

分類Dev

ビューモデルのDialogFragmentがデータバインディングで機能しない

分類Dev

フォアグラウンド通知サービスが1つ以上のデバイスで機能しない

分類Dev

AndroidChromeの大きなフォントのバグ/ズームのバグ/メタビューポートデバイス-幅が機能しない

分類Dev

Androidデータバインディングがビュー 'android:tag'プロパティで機能しない

分類Dev

フォームでの双方向データバインディングが機能しないAngular2

分類Dev

パフォーマンスの低いコンピューターでのSpringBeanシングルトン複製

分類Dev

WPFのパフォーマンスが遅い-多くのDataItem = nullバインディング警告

分類Dev

インクルードレイアウトのビューバインディングが機能しない

分類Dev

リストビュー内のXamarinフォームボタンコマンドバインディング

分類Dev

リストビュー内のXamarinフォームボタンコマンドバインディング

分類Dev

リストビュー内のXamarinフォームボタンコマンドバインディング

分類Dev

Androidのデータバインディングとビューモデルが機能しない

分類Dev

コードビハインドでのデータバインディングが機能しない

分類Dev

VBAアーリーバインディングとレイトバインディング-実際のパフォーマンスの違い

分類Dev

MongoDB-インデックススキャンのパフォーマンスが低い

分類Dev

WPFリストビューバインディングが辞書で機能しない

分類Dev

グリッドビューバインディングが機能しない

分類Dev

Excelマクロのパフォーマンスが低い

分類Dev

SSDアップグレードのパフォーマンスが低い

分類Dev

データバインディングが大文字のパッケージ名で機能しない

分類Dev

TextWatcherのデータバインディングがAndroidで機能しない

分類Dev

角度のあるテンプレート駆動型フォームでのモデルバインディングが機能しない

分類Dev

日付でフィルタリングされたマルチインデックスデータフレームが、日付インデックスレベルを抽出するときに、フィルタリングされていないすべての日付を返すパンダのバグ/機能

分類Dev

バインディングが機能しない条件付きビュー

分類Dev

Ember.js:ビューバインディングが機能しない

分類Dev

KVMゲストのグラフィックパフォーマンスが低い

分類Dev

ビュー内で角度データバインディングが機能しない

Related 関連記事

  1. 1

    カルーセルビューとリストビューのバインディングがXamarinフォームで機能しない

  2. 2

    AWSコンピューティング最適化インスタンスのマルチコアパフォーマンスが低い

  3. 3

    ビューモデルのDialogFragmentがデータバインディングで機能しない

  4. 4

    フォアグラウンド通知サービスが1つ以上のデバイスで機能しない

  5. 5

    AndroidChromeの大きなフォントのバグ/ズームのバグ/メタビューポートデバイス-幅が機能しない

  6. 6

    Androidデータバインディングがビュー 'android:tag'プロパティで機能しない

  7. 7

    フォームでの双方向データバインディングが機能しないAngular2

  8. 8

    パフォーマンスの低いコンピューターでのSpringBeanシングルトン複製

  9. 9

    WPFのパフォーマンスが遅い-多くのDataItem = nullバインディング警告

  10. 10

    インクルードレイアウトのビューバインディングが機能しない

  11. 11

    リストビュー内のXamarinフォームボタンコマンドバインディング

  12. 12

    リストビュー内のXamarinフォームボタンコマンドバインディング

  13. 13

    リストビュー内のXamarinフォームボタンコマンドバインディング

  14. 14

    Androidのデータバインディングとビューモデルが機能しない

  15. 15

    コードビハインドでのデータバインディングが機能しない

  16. 16

    VBAアーリーバインディングとレイトバインディング-実際のパフォーマンスの違い

  17. 17

    MongoDB-インデックススキャンのパフォーマンスが低い

  18. 18

    WPFリストビューバインディングが辞書で機能しない

  19. 19

    グリッドビューバインディングが機能しない

  20. 20

    Excelマクロのパフォーマンスが低い

  21. 21

    SSDアップグレードのパフォーマンスが低い

  22. 22

    データバインディングが大文字のパッケージ名で機能しない

  23. 23

    TextWatcherのデータバインディングがAndroidで機能しない

  24. 24

    角度のあるテンプレート駆動型フォームでのモデルバインディングが機能しない

  25. 25

    日付でフィルタリングされたマルチインデックスデータフレームが、日付インデックスレベルを抽出するときに、フィルタリングされていないすべての日付を返すパンダのバグ/機能

  26. 26

    バインディングが機能しない条件付きビュー

  27. 27

    Ember.js:ビューバインディングが機能しない

  28. 28

    KVMゲストのグラフィックパフォーマンスが低い

  29. 29

    ビュー内で角度データバインディングが機能しない

ホットタグ

アーカイブ