【发布时间】:2020-07-14 15:23:59
【问题描述】:
我对 Mobx 商店中的可观察私有财产有疑问。问题是带有 getter 和 setter 的可观察私有属性不起作用,而公共可观察属性则完全正常。为什么会这样?我交替测试了私有和公共财产(#privateSelectedType 和 selectedType)来做同样的事情。
EDIT2:我创建了一个代码框来更好地展示案例:https://codesandbox.io/s/tender-pond-kglzr?file=/src/carsStore.js
这是一个示例情况的代码。我用这个商店显示所有类型并标记selectedType:
class CarsStore {
#types = ["defaultType", "type1", "type2"];
#privateSelectedType = "defaultType";
selectedType = "defaultType";
otherThings = [];
get types() {
return this.#types;
}
get privateSelectedType() {
return this.#privateSelectedType;
}
set privateSelectedType(selectedType) {
this.#privateSelectedType = selectedType;
// call function updating otherThings, that's why I want to use setter in this store
this.#updateOtherThings();
}
#updateOtherThings = () => {
//update otherThings
}
}
decorate(CarsStore, {
"#types": observable,
"#privateSelectedType": observable,
selectedType: observable,
otherThings: observable
});
编辑:只需将所有出现的#privateSelectedType 更改为公共字段_publicSelectedType 即可使此代码正常工作。在我看来,mobx 对 JavaScript 私有字段根本不起作用或工作方式不同。
【问题讨论】:
标签: observable private mobx