javascript - 离开组件 vuejs 2 后自定义事件仍在触发

标签 javascript vuejs2

我正在使用 vue.js 开发一个 spa 项目。在一个组件中,我在一段时间后发送了 ajax 请求。我正在使用 vue-router 进行导航。当我离开路线并进入另一个组件时,ajax 请求仍在执行。我如何防止/销毁正在执行的事件?这是我的代码示例:

    export default {
        data() {
            return {
            };
        },
        methods: {
            onLoad() {
                setInterval(function(){
                    //sending ajax request
                }, 5000);
            },
        },
        mounted() {
            this.onLoad();
        },
    }

最佳答案

您需要将间隔 ID 保存在 Vue 实例中,以便稍后可以通过调用 clearInterval 将其删除。您可以通过以下方式实现这一目标:

export default {
  methods: {
    onLoad() {
      this.intervalId = setInterval(() => {
        //sending ajax request
      }, 5000)
    }
  },
  mounted() {
    this.onLoad()
  },
  beforeDestroy() {
    clearInterval(this.intervalId)
  }
}

编辑:intervalId 不需要 react 。

关于javascript - 离开组件 vuejs 2 后自定义事件仍在触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48960174/

相关文章:

javascript - 查找文本并将其替换为 Javascript

javascript - 动态调整包含 Handsontable 的容器的大小

javascript - 如何使用带有文本而不是 null/数字的 VuetifyJS 时间选择器组件?

javascript - 我是否缺少 vue 路由器转换的某些内容?

javascript - 间隔提出请求的更优雅、更高效的方式是什么?

javascript - 更新嵌套对象数组时出现类型错误

javascript - 我怎样才能在 vue-router 上返回/路由返回?

typescript - Vue 实例未获取 shims-vue.d.ts 文件

javascript - 在加载组件之前等待 VueX 值加载

javascript - 阻止 showAuthenticationDialog 在 Spotify 应用程序中自动登录