【发布时间】:2021-01-06 17:36:09
【问题描述】:
我想先在地图上初始化位置(使用经纬度)
它也很有效
如果我将默认参数放在 useState 挂钩上,我可以更改 Zoom + 或 -
const [viewport, setViewport] = useState({
width: "100vw",
height: "100vh",
latitude: 47.608013,
longitude: -122.335167,
zoom: 8,
});
return (
<ReactMapGL
{...viewport}
mapStyle="mapbox://styles/thecjreynolds/ck117fnjy0ff61cnsclwimyay"
mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}
onViewportChange={setViewport}
onDblClick={showAddMarkerPopUp}
>
// ... more code here
</ReactMapGL>
)
但是当我将 setViewport 放在另一个函数中时(function initMap())。
onViewportChange={initMap} // 在这里改变了
控制台没有显示任何错误和警告,
但我无法更改地图的大小或点击地图时无法移动地图。
const [viewport, setViewport] = useState();
function initMap() {
setViewport({
width: "100vw",
height: "100vh",
latitude: 47.608013,
longitude: -122.335167,
zoom: 8,
});
};
return (
<ReactMapGL
{...viewport}
mapStyle="mapbox://styles/thecjreynolds/ck117fnjy0ff61cnsclwimyay"
mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}
onViewportChange={initMap}
onDblClick={showAddMarkerPopUp}
>
// ... more code here
</ReactMapGL>
)
请告诉我为什么。谢谢。
【问题讨论】:
-
你的覆盖状态值和初始状态值是一样的!这样你就不会发现 UI 有任何变化
-
你在哪里打电话
initMap()? -
“我将 setViewport 放在另一个函数中(函数 initMap())”我看不出这样做的原因。你创建了一个函数,setViewport 一直设置为相同的状态
标签: reactjs react-hooks react-map-gl