Я изучаю MobX и меня заинтриговала проблема:
Если у меня есть это наблюдаемое:
class ItemsStore {
@observable items = [1,2,3];
}
const store = new ItemsStore;
а затем измените его так:
setInterval(() => {
store.items[0] = +new Date
}, 1000)
Заметил следующее:
autorun(() => console.log(store.items));
никогда не срабатывает ...autorun(() => console.log(store.items[0]));
запускается каждые 1 с и выдает новое значениеautorun(() => console.log(store.items.length));
срабатывает каждые 1 с, хотя значение не изменилось
Какая логика API за этим стоит? Я ожидал, что, поскольку store.items
никогда не срабатывает, эти неизмененные свойства будут вести себя так же.
И почему MobX знает, какой код находится внутри моего обратного вызова? анализирует ли он мой обратный вызов, который я передаю autorun
?