Лучшая практика для действий Redux на основе текущего магазина
Я пытаюсь понять - безуспешно - каковы рекомендации по отправке действия на основе текущего состояния в хранилище Redux.
У меня есть настройки, где при входе в систему идентификатор текущего пользователя хранится в auth.currentUser
,
У меня также есть отдельно данные пользователей, хранящиеся под users[id]
,
Во-первых, я хотел бы мой loadUser(id)
создатель действий, чтобы не беспокоиться о вызовах API, если пользовательские данные уже доступны. Во-вторых, я хотел бы иметь loadCurrentUser()
создатель действия, который выполняет вызов, чтобы получить пользователя на основе этого сохраненного идентификатора текущего пользователя.
Каков наилучший способ сделать это? Я знаю, что могу сделать это относительно легко, используя Redux Thunk, но это лучше или есть лучшие способы? До сих пор я избегал использовать это - вместо этого использовать промежуточное программное обеспечение с избыточным обещанием для моих асинхронных действий.
Изменить: чтобы уточнить, что я хочу сделать.
Когда мой компонент загружается, он должен гарантировать, что загружены текущие данные пользователя. Это будет сделано путем подключения loadCurrentUser()
быть отправленным.
Во-первых, это действие должно загрузить пользователя на основе идентификатора, хранящегося в другом месте магазина. Во-вторых, он должен делать это только в том случае, если этого пользователя с таким идентификатором еще нет в магазине.
1 ответ
Посвятите часть своего магазина хранению пользовательских данных и подключите их к любому соответствующему компоненту. Оттуда вы можете отправлять вызовы в зависимости от статуса вашего пользователя. Методы жизненного цикла - обычное место для такой логики.
componentWillMount() {
if (this.props.user.id){ //assuming id is undefined if no user
this.props.dispatchAction()
}
}