当前位置: 首页 > 面试题库 >

reactJS如何停止监听Ajax请求

段哲圣
2023-03-14
问题内容

我在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;
}


 类似资料:
  • 问题内容: 我正在使用jquery发出ajax请求 如何手动停止我的特定Ajax请求? 问题答案: 该方法返回一个可以用于执行此操作的对象: 然后,当您想停止请求时:

  • 我正在用C语言编写一个服务器,使用POSIX sockets api。 这是作为GUI应用程序的一部分运行的,它需要能够停止和启动服务器监听和向客户端发送数据。 服务器的主要部分基本上是这样的(我排除了很多代码,因为其中一些与这个问题无关。) 换句话说: 让套接字监听连接 为select()调用设置fds 使用stdin调用select(),所有连接客户端套接字,以及获取从GUI发送的任何数据的管

  • ap.onBackgroundAudioStop(CALLBACK) 监听音乐停止事件。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <style>.output{ display:block; max-width: 1

  • 问题内容: 当电话状态恢复为IDLE时,我正在拨打电话并使用电话监听器重新开始活动。但是当我完成活动后,电话监听器仍在运行,因此,当用户进行自己的通话并挂断时,我的活动又重新启动! 问题答案: 使用作为参数传递给方法停止监听更新。

  • 本文向大家介绍jQuery实现ajax的叠加和停止(终止ajax请求),包括了jQuery实现ajax的叠加和停止(终止ajax请求)的使用技巧和注意事项,需要的朋友参考一下 jQuery实现ajax的叠加和停止的关键代码如下所示: 以上所述是小编给大家介绍的jQuery实现ajax的叠加和停止(终止ajax请求),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常

  • 所以问题是如何临时停止和启动使用spring创建的jms侦听器,使用衰减方式: 那么基本上问题是什么。我们确实有一个初始化/更新机制,客户端可以在任何时间运行,在初始化/更新期间,我想停止使用任何消息,因为系统在这段时间内不可用,如果消息来了,它将丢失。 因此,我如何使用API停止侦听器或侦听器容器或整个连接。我发现一个类AbstractJmsListeningContainer有stop/sta