reactJS如何停止监听Ajax请求

我在componentdidmount中有一个ajax调用。然后在ajax promise中设置setState。

代码是这样的

componentDidMount(){

axios.post('mydomian.com/item/',this.state)

.then(function (response) {

const res = response.data

if (res.status === 'OK') {

this.setState({items :res.list})

}else{

console.log('can not load data', response)

}

}.bind(this))

}

componentWillUnmount(){

how to stop everything about axios?

}

当我导航到其他路线时,这会导致错误“无法在未安装的组件上设置状态”。

所以我认为我应该做的是在componentwillunmount中删除axios监听器。你会怎么做?

回答:

一个非常简单的解决方案是在unmount上设置一个标志,并在promise分辨率内使用它,如下所示:

componentDidMount(){

axios.post('mydomian.com/item/',this.state)

.then(function (response) {

if (this.unmounted) return;

const res = response.data

if (res.status === 'OK') {

this.setState({items :res.list})

}else{

console.log('can not load data', response)

}

}.bind(this))

}

componentWillUnmount(){

this.unmounted = true;

}

以上是 reactJS如何停止监听Ajax请求 的全部内容, 来源链接: utcz.com/qa/402241.html

回到顶部