Я только начинаю использовать flux (с сокращением на данный момент), и мне интересно, как должны обрабатываться отношения.
Например, мы можем использовать Trello, у которого есть доски с колонками, содержащими карты.
Один из подходов состоит в том, чтобы иметь один магазин/редуктор для плат и иметь все данные в нем, но это означает некоторые очень жирные магазины, поскольку они также должны будут содержать все действия для столбцов и карточек.
Другой подход, который я видел, - это разделение вложенных ресурсов на, например, BoardStore, ColumnStore и CardStore и использование их идентификаторов в качестве ссылки.
Вот пример того, где я немного смущен: у вас может быть создатель действия, называемый addCard, который делает запрос на сервер, чтобы создать карту со всеми данными. Если вы делаете оптимистичное обновление, вы бы создали объект карты в одном из своих хранилищ раньше, но вы не сможете узнать идентификатор, который будет иметь, пока вы не вернете запрос.
Короче говоря:
- Firing addCard
- addCard делает запрос, тем временем вы возвращаете действие типа ADD_CARD_TEMP
- вы получаете запрос и возвращаете действие типа ADD_CARD, где хранилище/редуктор изменяет идентификатор.
Есть ли рекомендуемый способ справиться с этим делом? Вложенный магазин/редукторы выглядят немного глупо для меня, но в противном случае вы оказываетесь в очень сложных магазинах, поэтому он действительно выглядит как компромисс.