Maison > Questions et réponses > le corps du texte
<script lang="ts"> import { defineComponent, ref, nextTick, unref, onMounted } from 'vue'; import { useScript } from '/@/hooks/web/useScript'; const BAI_DU_MAP_URL = 'https://api.map.baidu.com/getscript?v=3.0&ak=xxx'; export default defineComponent({ setup() { const wrapRef = ref<HTMLDivElement | null>(null); const { toPromise } = useScript({ src: BAI_DU_MAP_URL }); async function initMap() { await toPromise(); await nextTick(); const wrapEl = unref(wrapRef); if (!wrapEl) return; const BMap = (window as any).BMap; const map = new BMap.Map(wrapEl); const point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); map.enableScrollWheelZoom(true); } onMounted(() => { initMap(); }); return { wrapRef }; }, }) </script>
composant de classe vue
<script lang="ts"> import { ref, nextTick, unref } from 'vue' import {Vue} from 'vue-property-decorator' import { useScript } from '/@/hooks/web/useScript' const BAI_DU_MAP_URL = 'https://api.map.baidu.com/getscript?v=3.0&ak=xxx'; export default class LogisticsDetail extends Vue { private wrapRef = ref<HTMLDivElement | null>(null) private toPromise = useScript({ src: BAI_DU_MAP_URL }) async initMap() { await this.toPromise(); await nextTick(); const wrapEl = unref(this.wrapRef); if (!wrapEl) return; const BMap = (window as any).BMap; const map = new BMap.Map(wrapEl); const point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); map.enableScrollWheelZoom(true); } mounted() { this.initMap() } } </script>
const { toPromise } = useScript({ src: BAI_DU_MAP_URL });
-->private toPromise = useScript({ src: BAI_DU_MAP_URL })
Erreur :
Uncaught (in promise) TypeError : this.toPromise n'est pas une fonction
Comment écrire et utiliser vue-class-component
?
P粉8648728122024-02-27 00:10:46
En raison de la dépréciation dans Vue 3 vue-class-component
,因此可以使用替代选项:vue-faceing-decorator
.