Я изучаю MobX и пошел заинтригована проблемой:MobX поведение автозапуска
Если у меня есть этот наблюдаемый:
class ItemsStore {
@observable items = [1,2,3];
}
const store = new ItemsStore;
, а затем изменить его следующим образом:
setInterval(() => {
store.items[0] = +new Date
}, 1000)
I отметили следующее:
autorun(() => console.log(store.items));
never fires...autorun(() => console.log(store.items[0]));
fires every 1s and gives a new valueautorun(() => console.log(store.items.length));
fires every 1s although value is unchanged
Что такое API логика за этим? Я бы ожидал, что с store.items
никогда не срабатывает, что неизменные свойства будут вести себя одинаково.
И как MobX знает, какой код находится внутри моего обратного вызова? он анализирует мой обратный вызов, я перехожу на autorun
?
В соответствии с Документами ** не только массив Todos наблюдается в автозапуск, но и индивидуальные свойства внутри элементов списка задач * * наблюдаются. Поэтому я предполагаю, что если какой-либо элемент в массиве активно рассылает значение или использует значение для любого другого вычисления, то автозапуск запускается. Едва, это не будет. В документах, имеющих reagarding this..https://mobxjs.github.io/mobx/getting-started.html – pritesh