Следующий код предназначен для печати перевернутого списка пользователей при добавлении нового пользователя, но он не работает. Автозапуск слушает ленивую вычисляемую переменную (_userArrayRev), но как включить пересчет этой переменной? Автозапуск выполняется только один раз, в то время как я ожидаю, что он будет запущен три раза.
И почему MobX позволяет мне изменять наблюдаемую переменную userArray в AddUser(), когда для принудительных действий (useStrict) установлено значение true?
import { useStrict, configure, autorun } from 'mobx';
import { observable, action, computed } from 'mobx';
configure({ enforceActions: true });
class Test {
@observable _userArray = [];
@observable _userArrayRev = undefined;
userCount = 0;
addUser() {
console.log("Adduser");
this._userArray.push('user' + this.userCount);
this.invalidateCache();
}
// returns reversed array
getUsersArrayRev() {
if (this._userArrayRev == undefined) {
// console.log("recalculating userArray");
// TODO: should be reversed
this._userArrayRev = this._userArray;
}
return this._userArrayRev;
}
invalidateCache() {
this._usersArrayRev = undefined;
}
}
var t = new Test();
autorun(function test () {
console.log("users: ", t.getUsersArrayRev());
});
t.addUser();
t.addUser();