Установите начальное состояние хранилища в функциональном контейнере

#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 , но оно ничего не может установить, потому что еще ничего не было отрисовано