У меня проблема с наблюдаемой частной собственностью в магазине Mobx. Дело в том, что наблюдаемое частное свойство с методами получения и установки не работает, в то время как общедоступное c наблюдаемое свойство прекрасно работает. Почему так? Я протестировал как личное, так и публичное c свойство (#privateSelectedType
и selectedType
), чтобы сделать одно и то же.
EDIT2 : я создал коды и поле, чтобы лучше показать case: 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
на publi c поле _publicSelectedType
делает этот код работающим. Мне кажется, что mobx просто не работает или работает по-другому с JavaScript закрытыми полями.