我看过很多文章和实例,通过添加 ACTION_FAIL/ACTION_SUCCESS
以及有时添加 ACTION_ATTEMPT/ACTION_START
来处理 redux-thunk 中发生的错误。这很棒,尽管如此,我见过的所有案例似乎都会给用户一个简单的通知,例如“哎呀,出了问题。再试一次!”早点回家。
我正在寻找的情况是有一个无缝的dispatch-error-retry-success
转换,或者至少是一个比向每个thunk添加额外的操作调度更好(更易于维护)的解决方案。
一个例子是 token 过期。 如果 token 即将过期或由于 token 过期而发生失败(并且注销不是一个好的选择),那么刷新 token 并重试请求可能是一种解决方案,并且不会让用户抓取他的头。
我很想听听:
- 如何解决 redux-thunk 失败问题?
- 在使用当前解决方案之前,您是否尝试过其他替代解决方案?
- 如果是,您为什么要切换?
最佳答案
如果您可以自动处理故障(就像您提到的刷新 token 示例中一样),则根本不需要分派(dispatch)额外的操作。您可以简单地在 thunk 中重试,然后在恢复成功时发送成功操作。
function doRequest() {
return dispatch => {
makeRequest()
.catch(error => {
if (isUnauthorizedError(error)) {
return refreshToken().then(makeRequest);
}
throw error;
})
.then(
doRequestSuccess,
doRequestFailure
);
}
}
分派(dispatch)额外“重试”操作的唯一原因是您希望在用户界面中传达临时故障。
关于javascript - 处理 redux-thunk 中的错误不仅仅是通知用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54908537/