#reactjs #flux #reactjs-flux
Вопрос:
Полный пример приложения-официальное приложение TodoMVC от Facebook здесь: https://github.com/facebook/flux/tree/master/examples/flux-todomvc
Контейнер выглядит так:
'use strict';
import AppView from '../views/AppView';
import {Container} from 'flux/utils';
import TodoActions from '../data/TodoActions';
import TodoDraftStore from '../data/TodoDraftStore';
import TodoEditStore from '../data/TodoEditStore';
import TodoStore from '../data/TodoStore';
function getStores() {
return [
TodoEditStore,
TodoDraftStore,
TodoStore,
];
}
function getState() {
return {
draft: TodoDraftStore.getState(),
editing: TodoEditStore.getState(),
todos: TodoStore.getState(),
onAdd: TodoActions.addTodo,
onDeleteCompletedTodos: TodoActions.deleteCompletedTodos,
onDeleteTodo: TodoActions.deleteTodo,
onEditTodo: TodoActions.editTodo,
onStartEditingTodo: TodoActions.startEditingTodo,
onStopEditingTodo: TodoActions.stopEditingTodo,
onToggleAllTodos: TodoActions.toggleAllTodos,
onToggleTodo: TodoActions.toggleTodo,
onUpdateDraft: TodoActions.updateDraft,
};
}
export default Container.createFunctional(AppView, getStores, getState, {withProps: true});
В приведенном примере магазины начинаются пустыми без заданий. Тем не менее, я хочу предварительно заполнить магазин начальными задачами, поступающими с сервера. Допустим, пользователь ранее сохранял свои задачи, а теперь возвращается на страницу. В тот момент, когда пользователь снова открывает приложение, он видит свои уже существующие задачи.
Как бы вы задали начальное состояние магазина? Либо в какой-то функции инициализации, запрашивающей данные, либо переданной сервером через реквизиты?
Вещи, которые я пробовал
- установите его в функции магазина
getInititalState
, но доступа к реквизиту нет - установите его непосредственно в хранилище в функции контейнера
getState
, но затем хранилище не обновляется для представления - отправить событие в функции контейнера
getState
, но оно ничего не может установить, потому что еще ничего не было отрисовано