最近、すべての* ngForでtrackBy関数が実装されていないときに、Angularスタイルのガイドラインlint-extender "Codelyzer"が警告を投げています。なぜこれが問題とみなされているのだろうと私は思っています。角度 - trackByを実装するポイントは何ですか?
- このblogでは、trackByの実装例は
trackByFn(index, item) { return index;} // or item.id
になりました。私がindexからitem.idに切り替えた場合、これはどのように私のアプリをより速くするでしょうか?配列の挿入や削除に関しては、インデックスは最も重要な要素です。代わりに[ngFor]ディレクティブでオブジェクトID値を比較する必要がありますか? - モジュールのng_for_of.d.tsには、
_trackByFn
があります。だから私は、return index
-trackByは、とにかくデフォルトの設定だと思いますか?それで、それを明示的に実装するのはなぜ良い習慣と考えられるのですか?
私は個人的には、私のアプリで大きなコレクション(配列)を持っていて、それはreduxストアにあります。それだけで空の配列に置き換えることができたり、新しいアイテムは例えば、それに追加されますすることができます
return {...state, myArray: [...state.myArray, ...newItems]}
)は、
決してが移動または削除します。 index
の代わりにitem.id
で追跡するのは意味がありますか? * ngForですべてのコンポーネントに実際にreturn index;
関数を実装する必要がありますか?
ありがとうございます。私はtrackByがまだ役に立つと思うユースケースはないようです。私はただcodelyzerフラグをfalseに設定します。 ngForがあらゆるところで使われていることを考えると、デフォルトでは偽ではないというのは奇妙なことです。 – Phil
'trackBy'を使うのは一般的ではないと思います。私は、上記のケースはむしろまれであると思います。 –