Reactjs 在Redux Thunk中使用fetch api奇怪地刷新了头

Reactjs 在Redux Thunk中使用fetch api奇怪地刷新了头,reactjs,redux,fetch-api,redux-thunk,Reactjs,Redux,Fetch Api,Redux Thunk,嗨,我遇到了一个我不太明白的问题 我的API在每次请求时都会将一个新的身份验证令牌传递给我的客户机,以便在下一次请求时使用,并再次获得一个新的身份验证令牌。但有一个小小的转折:在短时间内(几秒钟内)发送的请求将被视为批处理,所有这些请求都可以而且必须使用相同的令牌,因为API不会为这些请求提供新的令牌 奇怪的是,所有的批量重新请求响应都不包含新的令牌,但我的客户端应用程序仍然设法用旧的和过期的令牌刷新它的状态 我是这样做的: 在每个成功的请求中,我都会发送一个“REFRESH-TOKEN”操作,

嗨,我遇到了一个我不太明白的问题

我的API在每次请求时都会将一个新的身份验证令牌传递给我的客户机,以便在下一次请求时使用,并再次获得一个新的身份验证令牌。但有一个小小的转折:在短时间内(几秒钟内)发送的请求将被视为批处理,所有这些请求都可以而且必须使用相同的令牌,因为API不会为这些请求提供新的令牌

奇怪的是,所有的批量重新请求响应都不包含新的令牌,但我的客户端应用程序仍然设法用旧的和过期的令牌刷新它的状态

我是这样做的: 在每个成功的请求中,我都会发送一个“REFRESH-TOKEN”操作,从响应头中获取新信息,如下所示:

let accessToken = response.headers.get("Access-Token")
let expiry = response.headers.get("Expiry")
dispatch(refreshTokens({
    status: "loggedIn",
    accessToken: accessToken,
    expiry: expiry
}));
response
来自fetch api,在我看来,当报头不存在时,它会给我过期的响应


非常感谢能向我解释发生了什么的人。目前,我不满意的解决方案是关闭批处理请求功能。

我认为不可能根据您共享的代码片段缩小问题的范围,但我建议以下几点:

  • 用于检查发生的操作以及它们如何影响您的状态
  • 考虑使用更新accessToken和到期日期。您的用例非常适合它。操作应该反映用户交互,而refreshToken不是

  • 感谢您推荐redux中间件,我跳过了这一步。。是的,我后来确实集成了devTools,但无法从中获得更多线索,
    REFRESH\u TOKEN
    操作(在thunk中调度)不知何故只携带过期的TOKEN。。。