问题
在使用vue开发一个地图相关的项目时,把地图相关的对象都定义到了vue组件的data里,造成地图页面非常卡顿,一直找不到问题所在,后来发现由于vue会深度监听挂载data上的对象,而第三方地图相关的对象内容很多,层级很深,这就造成了在赋值给组件this时,页面严重卡顿的现场
解决方法
把地图相关的地图定义到组件外部,既定义到export default { } 外部,同理,不需要监听响应变化的变量都尽量不要挂载到data上,如:
let myMap;
export default {
data () {
return { // 不需要绑定到模板上的变量尽量不在data里定义
}
},
methods: {
initMap () {
// this.myMap = new SelfMap() // 不要定义在this上
myMap = new SelfMap()
}
}
}
#注意问题
定义在export default 外的变量是该组件共用的,注意在beforeDestrory中清除,在初始化时(mounted)重新赋值