javascript - 处理 redux-thunk 中的错误不仅仅是通知用户

标签 javascript redux redux-thunk

我看过很多文章和实例,通过添加 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/

相关文章:

typescript - 如何将使用 typesafe-actions createAsyncAction 创建的操作传递给生成具有正确类型的 redux-observable 史诗的函数?

javascript - 如何在不中断异步流程的情况下在 redux 中自动刷新 JWT?

javascript - 如何在等待 redux 解析时禁用按钮?

javascript - Redux-Thunk Chaining Actions,得到一个“dispatch(...) then is not a function error

javascript - React Native Make View "Hug"键盘顶部

javascript - 在无限循环中运行的jquery

javascript - 使用 XMLHttpRequest 和通用处理程序通过 FTP 下载 PDF 文件

reactjs - react Redux : Cannot read property 'dispatch' of undefined

php - php 文件的 OOP Diamond 问题 - 我应该如何处理?

reactjs - 如何在异步函数中使用 setState