Предположим, у меня есть набор действий в разных частях дерева состояний, которые помимо своей логики должны изменять определенное свойство на корневом узле, например, переключить загрузку, чтобы указать, что пользовательский интерфейс должен глобально изменять видимость индикатора выполнения. .
const Contacts = types.model( 'Contacts', {
items: types.array(types.string)
}).actions(self=>({
show: flow(function* fetchData(){
// somehow indicate start of the loading process
self.items = yield fetch();
// somehow indicate end of the loading process
})
}));
const Store = types.model('AppStore', {
loading: types.optional(types.boolean, false),
contacts: Contacts
}).actions(self => ({
toggle() {
self.loading = !self.loading;
}
}));
Хотя я, безусловно, могу использовать getRoot, это принесет определенные неудобства при тестировании и снизит общую прозрачность дизайна.
Возможно, можно использовать ленивую композицию и экспорт экземпляров вместе с объявлениями модели из модуля, но для меня это выглядит еще более странным.
Каков предлагаемый способ решения таких проблем в Mobx-State-Tree?