大家伙儿,是不是遇见过这种事儿?用那种第三方软件时,老得先把当前的删了再清理存档文件。举个例子,那个百度的UEditor富文本框就是这样子。不清理干净下回用的话很容易出毛病。比如说在小程序里的语音功能,到时候你得确保退出前关闭语音,否则它可能会一直响个没完没了。真是让人头痛!
data() { return { timer: null // 定时器名称 } },
我们得想个招儿来搞定这个问题我这里倒是有个法子,你看看咋样?首先,咱们可以试试用定时器来实现这个功能。咱们就在需要的组件里随便搞一个计时器就成了。
this.timer = setIterval (() => { // 某些操作 }, 1000
记住,别忘了在组件毁灭前清理定时器噢。这样你就可以顺利地搞定定时器了。但是这个方法还有两点小缺点要告诉你先说说,我们得在组件里留下那个叫dataTimer的数据,这就比较烦人了。而且,设置定时器跟清空这些代码是分离的,如果需要批量处理预设功能就算咯。
beforeDestroy() { clearInterval(this.timer); this.timer = null; }
别慌,还有法子的!就是靠$once这个事件侦听器来关闭计时器。是不是觉得很牛逼?其实就是把定时器设好了之后,用$once直接关闭就完事了~
你看看这个让我们把创建和删除的代码放到一起了,你不觉得这就跟好哥们一样默契吗?还有,你可以在同一页上同时操作多个创建和删除,这可真是太简单了
老实跟你说,我觉得方案2好一些。为啥?因为这样代码看着更简单明了。关于$once、$on、$off这些东西怎么用,别急,我来给你普及下Vue事件监听的那点儿事,希望能帮到你。有啥不明白的尽管问,我会尽快回复你哒。谢谢各位对我们网站的支持!今天先说到这儿。希望你们都能学到新知识,别忘了点赞分享当然,你有别的问题或者想了解其他方面的内容,欢迎在评论区留言,我们一起探讨共同进步!
mounted: function () { const timer = setInterval(() =>{ // 某些定时器操作 }, 500); // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。 this.$once('hook:beforeDestroy', () => { clearInterval(timer); }) }
评论0