在使用vue3的时候,我在main.js里定义的这个属性
const app = createApp(App);
app.config.globalProperties.$api = api;
app.config.globalProperties.$mapViews = { situtationView: null };
app.use(router).use(store).mount('#app');
然后有个tools.js,我想在tools.js里边访问$mapViews这个属性,总是undefined,我可以确保这个属性有值,并且我设置延迟也是undefined,
网上查到的都是vue2的写法,我试了都无效
试过的方法:
1.main.js页面导出,js文件里引入 (无效)
2.在js文件里创建实例化, (无效)
朋友们,vue3里该咋样实现
目前采用的是,将js里的函数封装成一个整体类,这个类接收一个参数,接收到保存在原型上,内部调用;
// js文件
export default class LoadPlan {
constructor(mapView){
this.mapArcgis = mapView;
}
console.log(this.mapArcgis); // 我想要的东西
}
然后在调用的页面,实例化这个类,将你需要的属性传进去
```javascript
// vue文件
import LoadPlan from '@render/utils/handle/loadPlan'
let loadPlan= new LoadPlan(this.$mapViews.situationView);
```
如果实在组件中使用,并且是setup函数中,
import {onMounted, getCurrentInstance, reactive, ref, nextTick} from "vue";
setup() {
const {proxy} = getCurrentInstance();
proxy.$xxx
}
外部的js我倒是,没有具体试过,想来应该是一样的