【发布时间】:2020-04-20 20:10:57
【问题描述】:
如何将info 的状态(数据)发送到 App 挂钩,以便在 div 中显示属性? setInfo(info) 存储了我想要在 Map 挂钩上显示的数据,当我在 _onClick 中 console.log(info) 时,我可以看到所有属性。我被困在如何在 App 中使用和显示它。感谢您的帮助。
应用
const App = () => {
return (
<div className="App">
<div className="inner-left map-container">
<Map />
</div>
<div className="inner-right info-container">
<Nav />
<Search />
<div id="info_side">
{info} // throws an error undefined
</div>
</div>
</div>
);
}
export default App;
地图
const Map = () => {
...
const [info, setInfo] = useState(null)
...
const _onClick = event => {
const { features } = event;
const info = features && features.find(f => f.layer.id === 'icon');
setInfo(info); // This is what I would like to use in App
}
return (
<ReactMapGL
{...viewport}
onViewportChange={_updateViewport}
width="100%"
height="100%"
mapStyle={mapStyle}
mapboxApiAccessToken={TOKEN}
onHover={_onHover}
onClick={_onClick}>
<Source id="my-data" type="geojson" data={geojson}>
<Layer {...icon} />
</Source>
<div style={navStyle}>
<NavigationControl onViewportChange={_updateViewport} />
...
</div>
</ReactMapGL>
);
}
export default Map;
【问题讨论】:
-
这个
const Map是个坏名字。它可能与 ES6 的 Map 冲突。 -
要回答您的查询,您可以使用回调在组件之间共享数据或使用 Flux、Redux 等状态管理系统来存储全局状态
-
如何通过回调来做到这一点?如果可能的话,我现在想避开 Redux(谢谢你关于 const Map 的建议,我同意我会更新)
-
这是一场漫长的艰苦战斗,但我会为您节省一些时间,在 react 中,数据通常以一个方向流动,从父组件到子组件,以 props 的形式。您可以将回调函数 prop 传递给子代以调用(例如在挂载时)以“将数据”传回给父代以使用。
标签: javascript reactjs react-hooks react-state-management react-state