Ответ
При обновлении коллекции в MobX важно учитывать реактивность. Если просто заменить старую коллекцию новой (например, this.items = newItems), все наблюдатели потерят связь с исходными данными.
Лучше патчить существующую коллекцию, сохраняя ссылки на объекты:
// Плохо - теряем реактивность
this.items = newItems;
// Хорошо - сохраняем реактивность
this.items.replace(newItems); // для массивов
// Или для объектов:
Object.keys(newItems).forEach(key => {
if (this.items[key]) {
Object.assign(this.items[key], newItems[key]);
} else {
this.items[key] = newItems[key];
}
});
Такой подход сохраняет существующие наблюдатели и обновляет данные реактивно.