【发布时间】:2021-12-26 16:40:31
【问题描述】:
我正在构建一个包含地图和侧边选项卡的应用程序。
每次用户点击地图时,都会出现一个标记,并且坐标存储在使用的状态数组中。
我希望每次出现新标记时都在我的侧选项卡中将其显示为列表或手风琴项。
我的侧选项卡组件和我的addmarker 组件将应用程序作为父级。
每次点击地图时,如何将usestate 数组从我的addmarker 组件传递到我的侧边栏组件?
添加标记组件
function AddMarker(callbackFunction){
const [coord, setPosition] = useState([]);
const map = useMapEvents({
click: (e) => {
setPosition([...coord,e.latlng])
const mark = e
//console.log(mark)
//setInfo(`${e.latlng}`)
},
侧边栏组件
export default function VerticalTabs() {
const [value, setValue] = React.useState(0);
const handleChange = (event, newValue) => {
setValue(newValue);
};
return (
<Box
sx={{ flexGrow: 1, bgcolor: 'background.paper', display: 'flex', height: 224 }}
>
<Tabs
orientation="vertical"
value={value}
onChange={handleChange}
aria-label="Vertical tabs"
sx={{ borderRight: 1, borderColor: 'divider' }}
>
<Tab label="Waypoints" {...a11yProps(0)} />
<Tab label="Sorting" {...a11yProps(1)} />
</Tabs>
<TabPanel value={value} index={0}>
</TabPanel>
<TabPanel value={value} index={1}>
Sorting
</TabPanel>
</Box>
);
}
APP.JS
function App() {
return (
<div className="App" >
<Sidetabs/>
<MapContainer center={[40.44695, -345.23437]} zoom={3}>
..............
<AddMarker />
</MapContainer>
</div>
)
}
【问题讨论】:
-
把你想分享的状态放到最小分母的父节点(IE App.js)中,作为props传下去
标签: reactjs components use-state