Мы создаем новое приложение, использующее React/Redux, которое отображается на стороне сервера.
Мы хотим следовать лучшей практике для Redux и нормализовать наши данные на сервере, прежде чем он перейдет в начальное состояние для хранилища.
В этом примере предположим, что у нас есть общий объект "Продукты", который может быть довольно сложным и нормализуется в корне нашего состояния хранилища и состояния страницы в другом объекте в корне хранилища. Таким образом, структура и Reducers следуют типичному шаблону редуктора среза и будут выглядеть так:
{
page_x_state: PageReducer
products: ProductsReducer
}
Мы используем комбинированные редукторы, чтобы объединить редукторы, прежде чем передавать их в магазин.
Теоретический прецедент: у нас есть страница продуктов, в которой показан список основных сведений о продукте. Пользователь может нажать на продукт, чтобы показать модальный, который затем загружает и показывает полные данные о продуктах.
В приведенном выше примере состояние, отправленное с сервера, будет содержать только базовые модели продуктов (3 или 4 поля), этого достаточно, чтобы отобразить таблицу и получить всю информацию о продукте в этот момент является расточительным и не очень эффективным.
Когда пользователь нажимает на продукт, мы будем делать вызов AJAX для извлечения всех данных для этого продукта. Как только у нас будут все данные для одного продукта, следует ли обновить экземпляр в магазине продуктов с полной моделью? Если это так, мы бы закончили с набором объектов, все из которых могли бы быть разными состояниями (у некоторых могли быть минимальные поля с некоторыми, которые являются полномасштабными объектами с 10 полями). Это лучший способ справиться с этим?
Кроме того, мне было бы интересно услышать мысли о том, как управлять различными представлениями одной и той же базовой модели на сервере и как сопоставить ее с хранилищем Redux (в идеале в Java).