Я создаю одностраничное приложение с Reactjs и MobX на внешнем интерфейсе (порт 3000) и Nodejs и Express на внутреннем интерфейсе (API, порт 4000). Я новичок в обоих, MobX и Reactjs, и я пытаюсь создать хорошо структурированный проект. У меня вопрос: можно ли иметь хранилище для каждого представления?
Например, у меня есть хранилище UserStore, в котором хранится информация о сеансе, а также выполняется вход и выход пользователя из системы на платформе. Однако после входа в систему я хочу перенаправить пользователя на страницу панели инструментов. Эта страница панели инструментов должна получать информацию о пользователе, но также она должна связываться с API и получать некоторые данные (например, некоторые Todos). Вот как я бы это сделал:
Это функция входа в систему, в которой осуществляется перенаправление на Dashboard:
*UserStore.js*
[...]
import navigationStore from './NavigationStore';
[...]
login = async (user) => {
try {
const res = await axios.post('/session/login', {
username: user.username,
password: user.password
});
this.saveUser(res.data);
navigationStore.push('/dashboard');
} catch (error) {
[...]
}
}
И затемЯ создал DashboardStore.js, который имеет следующий код:
*DashboardStore.js*
[... imports and initializations ...]
class Store {
@observable todos = null
constructor() {
this.getDashboard();
}
@action('Load dashboard') getDashboard = async () => {
const res = await axios.get('/api/dashboard/', {});
this.todos = res.todos
}
}
const DashboardStore = new Store();
export default DashboardStore;
Но это будет означать, что я в конечном итоге сделаю еще один магазин для страницы Todos и другойМагазин для любой страницы мне нужно. В NodeJ вы можете создать контроллер для каждого класса, и в этом нет ничего странного. Тем не менее, я не уверен, что так оно и есть на MobX.