我不明白為什么我的變數是未定義的,我首先將我的變數 geojsonData 宣告為一個 let,這樣我就可以稍后在代碼中更改這些值。在我使用 if 陳述句檢查可見性是否為真的 useEffect 中,我設定了 geojsonData 的值。但是,在函式的回傳中,我的值沒有設定。
有沒有辦法可以設定geojson資料?
let geojsonData;
...
useEffect(() => {
if(componentVisible == true){
geojsonData = {
type: Type,
features: [
{
type: featuresType,
properties: {},
geometry: {
type: geometryType,
coordinates: coordinate,
},
},
],
};
});
...
return (
<View>
<Geojson geojson={geojsonData}/>
</View>
在答案部分提出建議后,我已將代碼更改為使用 useState 掛鉤。但是,我仍然收到型別錯誤:型別“不可分配給'(prevState:undefined)=> undefined'型別的引數。” 更新代碼:
const[geojsonData, setGeoData] = useState()
...
useEffect(() => {
if(componentVisible == true){
setGeoData({
type: Type,
features: [
{
type: featuresType,
properties: {},
geometry: {
type: geometryType,
coordinates: coordinate,
},
},
],
});
});
...
return (
<View>
<Geojson geojson={geojsonData}/>
</View>
uj5u.com熱心網友回復:
您不會發現let像在函陣列件中那樣更改變數是有效的。相反,您應該使用useStatehook。
const [geojsonData, setGeojsonData] = useState();
//...
useEffect(() => {
if(componentVisible == true){
setGeojsonData(
//include your data here
);
}
},[componentVisible]); //remember to include your dependencies
//...
return (
<View>
<Geojson geojson={geojsonData}/>
</View>
話雖如此,由于您似乎實際上并沒有在useEffect呼叫中獲得任何新資料,因此僅使用條件渲染可能更有效:
let geojsonData = //your data
return (
<View>
{componentVisible ? <Geojson geojson={geojsonData}/> : null}
</View>
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412491.html
標籤:
