Я пытаюсь понять глубокую наблюдаемость в MobX.
В частности, в следующем коде я бы хотел, чтобы автозапуск вызывался при каждом запуске setCommentCountForPost
, но в настоящее время это не так.
Как мне исправить этот код? И, наблюдаемого на свойстве Post достаточно, чтобы активировать автозапуск, когда я читаю список, в котором содержится сообщение? (как я делаю в автозапуске)
Я использую MobX 5.
Edit: я обнаружил, что код работает правильно, если я использую следующий вызов внутри автозапуска: console.log(toJS(p.getPosts()));
.
Это интересно, но почему и как мне это делать, если я хочу вызвать только getPosts ()?
Это код
import { useStrict, configure, autorun } from 'mobx';
import { toJS, observable, action, computed } from 'mobx';
configure({ enforceActions: true });
class Post {
@observable commentCount = 0;
setCommentCount(c) {
this.commentCount = c;
}
}
class PostList {
@observable _posts = {};
@action createPost(id) {
this._posts[id] = new Post();
}
@action setCommentCountForPost(id, c) {
this._posts[id].setCommentCount(c);
}
getPosts() {
return this._posts;
}
}
let p = new PostList();
p.createPost(1);
autorun(function test () {
console.log(p.getPosts());
});
p.setCommentCountForPost(1, 22);