Я использую normalizr
и имею свою ветку state.entities.users
.Состояние Redux UI в объектах
В моем SPA есть страницы для просмотра пользователей и последующие/отмена их подписки. Мы показываем spinner, когда вы выбираете пользователя или ожидаете результата последующего вызова API.
Есть ли наилучшая практика, где можно разместить состояние пользовательского интерфейса?
кажется проще просто хранить это в entities
объекта:
{
entities: {
[1]: {
name: "Bob",
followed_by_user: true
},
[2]: {
isFetching: true
}
[3]: {
name: "Jane",
isUpdatingFollowing: true
}
}
}
Существуют ли какие-либо крупные недостатки в сохранении этих данных здесь? В противном случае мне понадобится реализовать параллельную форму редуктора, например. state.ui.pages.users
с большим количеством перекрытий, с точки зрения которых они реагируют (например, оба редуктора должны будут ответить отдельно на USER_CONSTANTS.USER_FOLLOW_SUCCESS
: один для обновления state.ui.pages.users[1].isUpdatingFollowing = false
и один для обновления state.entities[1].followed_by_user = true
, тогда как в вышеуказанном формате я могу позаботиться обо всем этом за один присест).
Несколько редукторов, которые реагируют индивидуально на, возможно, одно и то же действие, по-видимому, являются красотой использования Redux от разделения перспективы концерна. В противном случае ваш редуктор будет становиться все больше и больше. – goldbullet