I want to be able to dispatch logoutUser() in my authenticatedRequest func...
Я бы сказал, что, достигнув этого, authenticatedRequest
делает больше, чем одно (аутентификация и, возможно, выход пользователей из системы).Со временем сложность может возрасти и усугубится, если вы захотите изменить redux-thunk
на что-то другое.
Если вам все еще это нужно, вы можете распространять dispatch
, чтобы отправлять другие действия:
const fetchCurrentUser = (dispatch) => authenticatedRequest(dispatch, '/customer')
const authenticatedRequest = (dispatch, url, opts = {}, req = request) => {
if (YOUR_CONDITION) {
dispatch(logoutUser())
}
...
}
Лично я бы не стал этого делать, поскольку он подвергает dispatch
внешним вызовам.Хотя это ваш выбор:)
Возможно ли справиться с logoutUser
в fetchUserInfo
действии?
const authenticatedRequest = (url, opts = {}, req = request) => {
if (YOUR_CONDITION) {
return Promise.reject('LOGOUT')
}
...
}
const fetchUserInfo = () => dispatch => {
return fetchCurrentUser()
.then(user => {
...
})
.catch(err => {
if (err === 'LOGOUT') {
dispatch(logoutUser())
}
})
}