Javascript 在mobx中使用@computed for array.length?
在mobx中,当使用Javascript 在mobx中使用@computed for array.length?,javascript,mobx,Javascript,Mobx,在mobx中,当使用observable.array()时,在@computed属性中计算.length是否有意义,或者它已经以某种方式在内部缓存 通常,在@computed中缓存什么类型的属性有意义?我应该什么都用吗?它是否可能导致不必要的重新计算?可观察数组的长度属性为: 所有此.$mobx.getArrayLength执行以下操作: 在@computed中缓存它所带来的好处将微乎其微 缓存经常使用的计算是一种很好的做法。我个人将其用于从@computed fullName(){return
observable.array()
时,在@computed
属性中计算.length
是否有意义,或者它已经以某种方式在内部缓存
通常,在
@computed
中缓存什么类型的属性有意义?我应该什么都用吗?它是否可能导致不必要的重新计算?可观察数组的长度属性为:
所有此.$mobx.getArrayLength
执行以下操作:
在@computed
中缓存它所带来的好处将微乎其微
缓存经常使用的计算是一种很好的做法。我个人将其用于从@computed fullName(){return this.firstName+''+this.lastName;}
到缓存的所有内容。这更多的是一个品味的问题,除非你正在处理更繁重的计算,当它变得非常有用的时候
Object.defineProperty(ObservableArray.prototype, "length", {
enumerable: false,
configurable: true,
get: function(): number {
return this.$mobx.getArrayLength()
},
set: function(newLength: number) {
this.$mobx.setArrayLength(newLength)
}
})
getArrayLength(): number {
this.atom.reportObserved()
return this.values.length
}