В настоящее время я не доволен хаками, с которыми я столкнулся, используя Flux, и теперь Redux для заполнения initialState в моем магазине.
Я всегда отправляю полезную нагрузку JSON вниз с начальной загрузкой страницы. Универсальный JavaScript не является вариантом в некоторых моих приложениях, поскольку они не все подкреплены Node. Я хотел бы сосредоточиться на "лучших практиках" и шаблонах вокруг того, как данные предварительно загружаются на клиенте. Затем я чувствую, что переход на сервер тривиален.
Вот суть того, что я сейчас делаю на работе и в нескольких других игрушечных приложениях с помощью Redux:
https://gist.github.com/kevinold/5767bb334472b7e2bfe3
Подводя итог:
- Передача глобальных переменных вниз со страницей
- В componentDidMount() Я отправляю действия, которые "получают" и обрабатывают различные фрагменты данных. (Эти методы "получать" используются при обработке этих битов данных, когда они извлекаются асинхронно через действие запроса, и Im перепрофилирует их здесь, поскольку у меня уже есть данные.)
Это работает, и есть какие-то проблемы, которые возникали, но это похоже на взлом. Я не очень доволен. Кроме того, я чувствую, что начальное состояние Redux не доволен тем, что я это делаю.
Согласно http://rackt.org/redux/docs/recipes/ServerRendering.html и разделу "Клиентская сторона", я могу передать initialState в мой магазин.
У меня есть патч, который у меня есть для другого проекта, с которым я помогаю (KeystoneJS). Я передаю объект Keystone в initialState:
В то время как это работает, как вы можете видеть, Im вынужден соответствовать форме вывода моих общих комбинированных Reducers (https://github.com/kevinold/keystone/commit/6f80c2f6f1e5c081361369a8bb31b75f1e62460f#diff-b4b498ca92c4d05e050b45c725c26f9d), или я получу консоль предупреждения и т.д.
Я мог бы очень лениться в этом, но пытаюсь ограничить необходимость обновлять другую часть данных, когда я добавляю/изменяю что-либо, связанное с редукторами (добавьте редуктор, как они составлены и т.д.).
Я понимаю, что мне, возможно, понадобится, чтобы получить это начальное состояние в редукторах правильно.
В настоящее время я перевариваю, как (https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/client.js#L25) обрабатывает его initialState.
ИД действительно ценят некоторые отзывы о "лучших" и "реальных мирах", которые работают для других.