Uniapp 生命周期钩子destroyed 详解
创作时间:
作者:
@小白创作中心
Uniapp 生命周期钩子destroyed 详解
引用
1
来源
1.
https://www.pweb123.com/frame/uniapp/1095.html
在Uniapp开发中,合理管理组件生命周期对于防止内存泄漏、事件堆积和资源未释放等问题至关重要。本文将详细介绍Uniapp中的destroyed生命周期钩子,包括其执行时机、基本用法、实际应用场景以及注意事项与最佳实践。
什么是 destroyed 钩子
destroyed 是 Vue.js(以及基于 Vue 的 Uniapp)组件生命周期中的一个重要钩子函数,它会在 Vue/Uniapp 实例被销毁后调用。在 Uniapp 中,这个生命周期函数同样适用,当页面或组件被卸载时触发。
destroyed 的执行时机
destroyed 钩子在以下情况下会被调用:
- 页面导航离开时:当用户从当前页面跳转到其他页面(非 tabbar 页面)
- 组件被移除时:当父组件动态移除了某个子组件
- 手动销毁实例时:通过调用
this.$destroy()
需要注意的是:
- tabbar切换不会触发页面的
destroyed navigateBack返回时会触发前一个页面的created,但不会立即销毁当前页
基本用法示例
export default {
data() {
return {
timer: null
}
},
created() {
//创建一个定时器
this.timer = setInterval(() => {
console.log('定时器运行中...')
},1000)
},
destroyed() {
//清除定时器避免内存泄漏
if(this.timer) {
clearInterval(this.timer)
this.timer = null;
console.log('定时器已清除')
}
console.log('组件/页面已被销毁')
}
}
实际应用场景
- 清理工作
destroyed() {
//取消事件监听
uni.$off('someEvent', this.handleEvent);
//清除地图实例
if(this.map) {
this.map.destroy();
this.map = null;
}
}
- 数据保存到全局或缓存
destoryed() {
//将表单数据保存到全局store或缓存
if(this.formData) {
uni.setStorageSync('draftForm',this.formData);
}
//或者使用vuex
this.$store.commit('saveTempData',this.tempData);
}
- WebSocket连接关闭
destoryed(){
if(this.socket && this.socket.readyState === WebSocket.OPEN){
this.socket.close();
console.log("WebSocket连接已关闭");
}
}
注意事项与最佳实践
- 与 beforeDestroy的区别
beforeDestroy:实例销毁之前调用,此时实例仍然完全可用(适合做清理前的准备工作)destoryed:实例销毁后调用,所有绑定和监听都会被移除,子实例也都被销毁
- 移动端特殊考虑
在Uniapp的移动端环境中:
- Android物理返回键会触发destoryed而iOS滑动返回默认不会(可通过配置改变)
- APP进入后台不会触发,destory只在实际卸载时发生
- 性能优化建议
对于可能频繁创建销毁的组件:
- destory时要彻底释放大对象引用(null赋值)
- WebGL/Canvas等资源要手动释放
- 常见错误处理
destoryd(){
try{
this.clearAllIntervals();
}catch(e){
console.error("清理失败:",e);
}
},
methods:{
clearAllIntervals(){
let lastId = setInterval(()=>{},9999);
for(let i=lastId;i>=0;i--){
clearInterval(i);
}
}
}
- 调试技巧
可以在控制台输出查看是否发生内存泄漏:
//在入口文件添加
Vue.config.devtools=true;
Vue.config.debug=true;
Vue.config.productionTip=false;
总结
合理使用 destoryd生命周期能有效防止:
✓内存泄漏 ✓事件堆积 ✓资源未释放等问题。在Uniapp开发中,特别是需要管理原生资源的场景(如地图、音视频),做好销毁处理尤为重要。
热门推荐
游戏化反诈教育:从《蛋仔派对》看游戏平台的社会责任创新
嵩山二祖庵:宋代建筑与禅宗文化的完美融合
断臂求法地:嵩山二祖庵的禅宗传奇
端午节:屈原与龙舟的传奇
上海端午民俗活动大揭秘:传统与创新的完美融合
心理学视角下的爱情:从激情到承诺的深层解析
“假日恋情”还是“一日之恋”?文化差异下的爱情解读
夜间高速行车安全指南:规划、检查与驾驶要点
拼搏的姿态最动人!残奥会上,这一幕幕激励人心
沙克《民族魂》:颂扬了中华民族坚韧不拔、自强不息的精神风貌
查尔斯小火车:游戏世界里的恐怖传奇
寒假来了,《迷你世界》防骗指南
原来花雕酒并不是普通的黄酒,真相在这里
《迷你世界》未成年人充值退款攻略:从官方渠道到法律途径
广西三江程阳八寨:2000余座吊脚楼里的侗族文化瑰宝
云南翁基古寨:景迈山中保留完好的拉祜族村落
洪都之战:朱元璋与陈友谅的兵力之谜
解码情绪暴躁:从根源分析到实用管理技巧
暴躁易怒或暗藏健康隐患,专家解析成因与应对方案
内在能量不足致易怒,5种科学方法助你稳定情绪
桂林春季旅游攻略:磨盘山码头交通与漓江游船全指南
玩转桂林市区:从象鼻山到两江四湖,一日游完整攻略
中国碳纤维产能全球第一,产业链布局日趋完善
奥特之母:光之国的守护女神
沙漠盖房指日可待?中建研发出新技术,用沙低成本制成建筑砖!
《囚于永夜》VS《音尘悄然》:谁才是温然的最佳舞台?
六成品牌首次入驻,D15生活美学馆为温泉镇注入文化新活力
图解微信支付的弯弯绕
新增141个车位,南京秦淮两小区告别停车难
东莞新增8.6万个停车位,出台22项措施破解停车难