mobxでは、observable.array()
を使用する場合@computed
プロパティで.length
を計算するのは意味がありますか、それとも既に内部的に何らかの形でキャッシュされていますか?@computedをmobxのarray.lengthに使用しますか?
一般に、@computed
でキャッシュするのはどのようなプロパティですか?私はすべてのためにそれを使うべきですか?それは不必要な再計算につながる可能性がありますか?
mobxでは、observable.array()
を使用する場合@computed
プロパティで.length
を計算するのは意味がありますか、それとも既に内部的に何らかの形でキャッシュされていますか?@computedをmobxのarray.lengthに使用しますか?
一般に、@computed
でキャッシュするのはどのようなプロパティですか?私はすべてのためにそれを使うべきですか?それは不必要な再計算につながる可能性がありますか?
観察可能な配列のlengthプロパティはdefined as followsです:
Object.defineProperty(ObservableArray.prototype, "length", {
enumerable: false,
configurable: true,
get: function(): number {
return this.$mobx.getArrayLength()
},
set: function(newLength: number) {
this.$mobx.setArrayLength(newLength)
}
})
すべてthis.$mobx.getArrayLength
はis the followingん:あなたは@computed
でそれをキャッシュから取得します
getArrayLength(): number {
this.atom.reportObserved()
return this.values.length
}
利点は、誰にもスリムになります。
頻繁に使用する計算をキャッシュすることをお勧めします。私は個人的には@computed fullName() { return this.firstName + ' ' + this.lastName; }
から、キャッシュされたsupercluster。あなたが重い計算を扱っていない限り、それは非常に有用になります。