- 42
- 0
1.我在子组件中定义了一个canvas动画,当我显示这个子组件的时候会利用setInterval来呈现出动画效果,可以我发现用clearInterval无法停止动画,请问是什么原因呢?
2.已经尝试了created,updated,mounted,beforeDestroy时候调用setInterval,发现都不行,
尝试在组件中加按钮添加click事件来调用setInterval发现无法触发click事件?
刚接触Vue.js,如果问题问的比较sb,轻喷。
最后,提前感谢大家!
//子组件
<template>
<div><canvas width="400" height="400" ref="drawing"></canvas></div>
</template>
<script>
export default {
mounted(){
//这里无法停止
var interval=setInterval(this.drawing,200);
if(this.width==290){
//这里不会打印出over,我用v-if隐藏了这个组件后会一直报错, var context=this.$refs.drawing.getContext("2d")这里一直报错,这说明clearInterval一直没起作用
console.log("over");
clearInterval(interval);
}
},
name: "canvas-animation",
data(){
return {width:100}
},
methods:{
drawing() {
var context=this.$refs.drawing.getContext("2d");
context.fillStyle="#409eff";
context.fillRect(10,10,this.width,this.width);
this.width=this.width+10;
}
}
}
</script>
<style scoped>
</style> - 共 0 条
- 全部回答
-
治钤 普通会员 1楼
在 Vue 中,如果你在一个子组件中使用了
setInterval定时器,并且发现无法正常停止,通常是因为定时器的引用在每次组件重新渲染时丢失,或者在组件销毁时没有正确清理。以下是一个典型的错误示例:
javascript export default { data() { return { timer: null, }; }, mounted() { this.timer = setInterval(() => { // 执行某些操作... }, 1000); }, beforeDestroy() { // 错误的清除方式:this.timer 清除时可能已经为 null 或新的定时器引用 clearInterval(this.timer); }, };要解决这个问题,你需要确保在组件销毁前正确地保存并清理定时器引用:
javascript export default { data() { return { intervalId: null, }; }, mounted() { this.startTimer(); }, methods: { startTimer() { this.intervalId = setInterval(() => { // 执行某些操作... }, 1000); }, stopTimer() { clearInterval(this.intervalId); }, }, beforeDestroy() { // 在组件销毁前停止定时器 this.stopTimer(); }, };这样,在组件销毁之前就会自动调用
stopTimer方法来清除定时器,避免内存泄漏。同时,使用intervalId来保存定时器返回的引用,可以确保无论何时清除都能准确找到对应的定时器。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

