美文网首页
2021-10-28 在vue2中传公共Map或者Viewe

2021-10-28 在vue2中传公共Map或者Viewe

作者: MrSwilder | 来源:发表于2021-10-28 14:03 被阅读0次

需求

在做一张图的过程中,经常会用到多个组件使用同一个Map或者Viewer的情况,因此需要将map或者viewer共享,可以将map定义为全局变量或者放在vuex中,但是这两种方法都不好用,原因如下:

1.一般map或者viewer比较大,放在data中作为响应式数据非常耗性能

2.挂载在全局变量时,一般都需要绑定一个dom,初始化赋值往往dom都还没有创建,强行定义一个往往导致逻辑有些乱

用provide解决这个问题

vue3中比较容易,地图加载完成后,调用

 provide('map', map)

完美解决问题

但是在vue2中provide()函数是在created之前执行,这时还没有dom,怎么办,解决方法:定义一个箭头函数

父组件中:

provide() {
    return {
      map: () => {
        return this.map;
      }
    };
  },
data() {
    return {
      mapLoaded: false
    };
  },


mounted(){
     this.initMap();
    this.mapLoaded=true
}

在templete中

 <div v-if="mapLoaded" class="legend"><Legends></Legends></div>

在子组件中就可以获取到

export default {
  inject: ["map"],
  data() {
    return {
      legends: legends
    };
  },
  mounted() {
    console.log(this.map());
  }
};

输出结果:


image.png

相关文章

网友评论

      本文标题:2021-10-28 在vue2中传公共Map或者Viewe

      本文链接:https://www.haomeiwen.com/subject/mdlvaltx.html