2 回答

TA貢獻1843條經驗 獲得超7個贊
第一次渲染發生時,不會立即設置坐標ReactGoogleMaps。因此,當您嘗試訪問 props.coordinates[0] 的緯度時,您會收到此未定義的錯誤。
我建議:
在 coords.length > 0 之前不渲染 ReactGoogleMaps
在嘗試訪問之前檢查第一個元素是否存在,如下所示:
function ReactGoogleMaps(props) {
return (
<div style={{width: "100%", height: "100%"}}>
{ props.coordinates[0] &&
<WrappedMap
coordinates={{lat: props.coordinates[0].lat, lng: props.coordinates[0].lng}}
/>
}
</div>
)
};

TA貢獻1821條經驗 獲得超6個贊
孩子甚至得到更新的道具嗎?IMO,在您使用 setCoords 之后,道具不會在孩子中更新。
第一個解決方案使用您正在使用的默認值進行初始化:
const [coords, setCoords] = useState ([
{lat: -5.2119899, lng: 119.4461816},
{lat: -5.209704, lng: 119.44075},
])
第二種解決方案,試試 UseEffect():
function ReactGoogleMaps(props) {
const [coords, setCords] = useState (props.coordinates)
useEffect(() => {
setCords(props.coordinates);
}, [props]);
return (
<div style={{width: "100%", height: "100%"}}>
<WrappedMap
coordinates={{lat: coords[0].lat, lng: coords[0].lng}}
/>
</div>
)
};
注意:我還沒有測試過,但希望它能工作
添加回答
舉報