为何定时器一定要移除?页面销毁之后不会移直接摧毁定时器吗?
在读Vue3生命周期函数文章的时候,
created:执行这个函数的时候,vue 实例已经初始化了,可以在这里调用数据,不过还没渲染到页面上。 在当前函数中我们可以访问到 data 中的属性,此时,会将 data 中的属性和 methods 的方法添加到 vue 的实例身上,同时会将 data 中所有的属性添加一个 getter/setter 方法。这里可以进行前后端上数据交互(ajax请求的时候) 需要在当前生命周期中使用。有 this props,不能访问 dom(还没有渲染完毕)。常用于自动 ajax 请求、事件监听、定时器开启等。
beforeDestroy:出发这个函数时,还没开始销毁,此时刚刚脱离运行阶段。data,methods,指令之类的都在正常运行。用于移除 dom 事件监听、定时器等。
有2个问题:
1.定时器开启/移除,在created,beforeDestroy地方,为何需要这样指出定时器来?
1)定时器可以在任意时候做,比如mounted,为何一定指在created这里?
2)为何定时器一定要移除?页面销毁之后不会移直接摧毁定时器吗?
2.在vue3中为何不能引入onBeforeCreate和onCreated方法?
import { onBeforeCreate,
onCreated
} from 'vue'
回答:
created
是最早的钩子函数,此时大部分我们需要的东西,比如data
已经就绪,所以可以在这里开启定时器。当然可以在mounted
里开启,看你喜欢和需求。- 页面销毁,当然定时器就没了。但是 Vue 是 MVVM 框架,大部分时候我们使用的都是组件,界面切换并不重置页面环境,所以需要手动移除,以避免内存泄漏。
- vue3 引入了 composition API 和
<script setup>
,这两个方法逻辑上被setup
取代了
回答:
1.上面也写了,只是常用于而已。定时器适合在什么时候开,由功能、业务来决定。然后就是销毁定时器,你可以自己试试单页面应用,不销毁定时器(setInterval)再卸载组件、跳转路由,那个定时器会不会自动销毁。
2.onBeforeCreate,onCreated这两个,我猜是因为setup是最早运行的,优先于created,所以它就相当于已经并入了这两生命周期,所以不重复写。
以上是 为何定时器一定要移除?页面销毁之后不会移直接摧毁定时器吗? 的全部内容, 来源链接: utcz.com/p/933098.html