我遇到了这个问题,我有一些承诺的承诺的计算值,在observables上过滤,当它取决于变化的可观察量时,不会重新评估。这是一个例子,
class CustomerStore {
@observable selectedCustomerId = "";
@observable selectedHouseholdId = "";
@computed
get customer() {
return this.selectedCustomerId
? fromPromise(api.getCustomerById(this.selectedCustomerId))
: fromPromise.resolve(null);
}
@computed
get customerRegisteredProducts() {
return fromPromise(
this.customer.then(customer => {
return api.getCustomerRegisteredProducts(customer.identity.id).then(
action(products => {
this.selectedHouseholdId = products.map(p => p.householdId).shift();
return products;
})
);
})
);
}
@computed
get customerProducts() {
return fromPromise(
this.customerRegisteredProducts.then(registeredProducts => {
return registeredProducts.filter(
rp => rp.householdId === this.selectedHouseholdId
);
})
);
}
}
this.selectedHouseholdId
由用户界面中的<select>
字段更新,但我注意到customerProducts
列表在更改时未重新评估。我做错了什么?
感谢您的帮助,
安德鲁
答案 0 :(得分:0)
this.selectedHouseholdId
的更改不会让customerProducts
再次重新计算,因为在执行computed
函数期间,此可观察对象无法访问当承诺解决了。
您可以在第一个computed
函数中看到不同的内容:customer()
,
当this.selectedCustomerId
更改时,此功能将重新计算。