repeat.for
基本的に、すべてのメッセージをループし、 を使用してメッセージ ビューをレンダリングする で構成される、いわゆるチャット ビューがあります<compose>
。
問題は、メッセージ数が 50 を超え、ユーザーがチャット間を移動すると、非常に遅くなることです ( repeat.for
VM のデータセットを置き換えると、更新がトリガーされます)。
このようなビューの処理に関して、何か間違ったことをしているように感じます。他の代替案に関する情報を得ることができますか?
UI の仮想化を試してみましたが、残念ながら現在のプラグインは必要な機能 (可変高さのアイテム、ボトムアップの配置) をサポートしていません。
また、バインディングに関してかなりの最適化を行いました。ほとんどは 1 回限りであり、データセットへの更新はデバウンスされます。しかし、主なボトルネックは初期ロード (最初にビューをバインドする) であるため、これでは改善されませんでした。
ありがとう!
現在のアプローチの例:
<li repeat.for="message of chat.messages">
<compose view-model.bind="getMessageViewFromMessage(message) & oneTime"
model.bind="message & oneTime"
containerless>
</compose>
</li>