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

时间:2018-11-26 05:06:25

标签: javascript reactjs axios

当组件卸载时,我正在取消axios请求

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

componentWillUnmount () {
 source.cancel('message')
}

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

取消后设置新令牌。

let uploadCancelTokenSource = axios.CancelToken.source();

upload() {
    const config = {
        cancelToken: uploadCancelTokenSource.token,
    };  
}

cancel() {
    uploadCancelTokenSource.cancel('Operation canceled by the user');
    uploadCancelTokenSource = axios.CancelToken.source();
}