簡體   English   中英

onMount 錯誤中的 Svelte 引用全局變量

[英]Svelte reference global variable inside onMount error

所以基本上我像這樣在 onMount 中初始化一個對象-

onMount(() => {
    
    const mapy = new mapboxgl.Map({
      container: "map",
      style: "mapbox://styles/mapbox/satellite-v9",
      center: testCoords[0],
      zoom: 19,
    
    });
    console.log(mapy);
});

然后在外面我有——

function AddPoint(){
    Center=mapy.getCenter;
}

從 HTML 按鈕調用 AddPoint。 我在控制台中收到此錯誤 - Uncaught ReferenceError: mapy is not defined

我只在它被初始化后才按下按鈕,我知道它已經被初始化,因為我在 onMount 中的 console.log()

這是一個簡單的范圍錯誤。 當您在onMount ( const mapy = ... ) 中聲明mapy時,您將mapyonMount范圍內的本地,這意味着它在onMount之外未定義。

您在這里要做的是在腳本的頂層聲明mapy ,然后在onMount分配給它:

let mapy;

onMount(() => {
    mapy = new mapboxgl.Map({
      container: "map",
      style: "mapbox://styles/mapbox/satellite-v9",
      center: testCoords[0],
      zoom: 19,    
    });
    console.log(mapy);
});

function AddPoint() {
    Center = mapy ? mapy.getCenter : undefined;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM