2017-08-24 8 views
2

mobxでは、observable.array()を使用する場合@computedプロパティで.lengthを計算するのは意味がありますか、それとも既に内部的に何らかの形でキャッシュされていますか?@computedをmobxのarray.lengthに使用しますか?

一般に、@computedでキャッシュするのはどのようなプロパティですか?私はすべてのためにそれを使うべきですか?それは不必要な再計算につながる可能性がありますか?

答えて

2

観察可能な配列の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.getArrayLengthis the followingん:あなたは@computedでそれをキャッシュから取得します

getArrayLength(): number { 
    this.atom.reportObserved() 
    return this.values.length 
} 

利点は、誰にもスリムになります。

頻繁に使用する計算をキャッシュすることをお勧めします。私は個人的には@computed fullName() { return this.firstName + ' ' + this.lastName; }から、キャッシュされたsupercluster。あなたが重い計算を扱っていない限り、それは非常に有用になります。

関連する問題