Vue 3 生命周期钩子怎么处理地图实例的加载与内存回收

千浩吖_2192

千浩吖_2192

2026-10-18

251人浏览

原创

vue 3 中地图实例需在 onmounted 内 await sdk 加载完成后再初始化,容器须有明确宽高并用 ref 绑定,onbeforeunmount 中调用销毁方法清理资源,地图实例用 ref 存储,避免 reactive 包裹或响应式代理干扰。

vue 3 生命周期钩子怎么处理地图实例的加载与内存回收

在 Vue 3 中处理地图实例(如百度地图、MapLibre GL JS 等),核心不是“用哪个钩子”,而是让地图加载时机与 DOM 可用性、第三方脚本就绪状态、组件生命周期三者严格对齐。错用钩子会导致白屏、报错或内存泄漏。

onMounted 中不直接初始化,先等地图 SDK 加载完成

不能在 onMounted 里直接写 new BMap.Map(...) 或 new maplibregl.Map(...),因为地图 SDK 脚本可能还没下载完,window.BMap 或 maplibregl 还未定义。

  • 封装一个异步加载函数(如 loadBaiduMap() 或 import('maplibre-gl')),返回 Promise
  • 在 onMounted 内 await 它成功后再创建地图实例
  • 加超时和错误兜底:5 秒未加载 → 提示“地图服务不可用”;AK 无效 → 显示授权失败

容器必须有明确宽高,且用 ref 精准绑定

地图渲染依赖真实 DOM 尺寸。若容器宽高为 0 或 auto,地图会空白或缩放异常。

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习