axios取消的请求无法重新启动

Sha*_*med 4 javascript reactjs axios

当组件卸载时,我正在取消axios请求,如下所示

const CancelToken = axios.CancelToken
const source = CancelToken.source()

componentWillUnmount () {
 source.cancel('message')
}
Run Code Online (Sandbox Code Playgroud)

卸载组件后,在后台发生的网络请求被标记为“已停止”。问题是当用户再次转到该组件时,应该在componentDidMount中发生的网络请求无法启动。

小智 7

axios#cancellation描述了使用cancelToken的两种方法。您使用了第一种方法,即source.token / source.cancel。我以这种方式开始,并遇到了与您类似的问题:取消对特定URL的请求后,再也无法从该URL获得成功的响应。我使用执行程序函数切换到第二种方法,问题消失了。我猜想是为多个请求共享相同的cancelToken,这就是他们说可以使用executor函数方法执行的操作。无论如何,也许这也对您有用。

  • 你是对的。在每个请求中,cancelToken 应该是新的。使用 `const source = CancelToken.source();` 生成新的 `source.token` ,问题就解决了。 (2认同)