ReactJS:Show/Hide 使用反应挂钩的具有不同 ID 的不同 div
ReactJS: Show/Hide different divs with different IDs using react hooks
我的项目中有一个功能,我有不同的图标来显示 divs。
到目前为止,这是我的代码:
const [drawerOpen, setDrawerOpen] = useState(false);
const [click, setClick] = useState(false);
const contextData = {
stateSetters: {
setDrawerOpen
}
};
<Row>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
</Row>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-1">
</div>
</div>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-2">
</div>
</div>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-3">
</div>
</div>
我正在寻找如何通过调用其 div ID 打开的方法。我尝试调整 onClick() 但它仍然一次打开所有 divs。
需要指定要打开的抽屉id而不是state中的布尔值
const [drawerOpen, setDrawerOpen] = useState('');
const handleDrawerOpen = (data) => {
if(data === drawerOpen) {
setDrawerOpen('');
} else {
setDrawerOpen(data);
}
}
const contextData = {
stateSetters: {
setDrawerOpen: handleDrawerOpen
}
};
<Row>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-1');
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-2');
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-3');
}}/>
</div>
</Card>
</Col>
</Row>
<div className={drawerOpen === 'data-1' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-1">
</div>
</div>
<div className={drawerOpen === 'data-2' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-2">
</div>
</div>
<div className={drawerOpen === 'data-3' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-3">
</div>
</div>
我的项目中有一个功能,我有不同的图标来显示 divs。
到目前为止,这是我的代码:
const [drawerOpen, setDrawerOpen] = useState(false);
const [click, setClick] = useState(false);
const contextData = {
stateSetters: {
setDrawerOpen
}
};
<Row>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
setClick(!click);
contextData.stateSetters.setDrawerOpen(!click);
}}/>
</div>
</Card>
</Col>
</Row>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-1">
</div>
</div>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-2">
</div>
</div>
<div className={drawerOpen ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-3">
</div>
</div>
我正在寻找如何通过调用其 div ID 打开的方法。我尝试调整 onClick() 但它仍然一次打开所有 divs。
需要指定要打开的抽屉id而不是state中的布尔值
const [drawerOpen, setDrawerOpen] = useState('');
const handleDrawerOpen = (data) => {
if(data === drawerOpen) {
setDrawerOpen('');
} else {
setDrawerOpen(data);
}
}
const contextData = {
stateSetters: {
setDrawerOpen: handleDrawerOpen
}
};
<Row>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-1');
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-2');
}}/>
</div>
</Card>
</Col>
<Col md={8}>
<Card className="project-card">
<div>
<Icon type="down" onClick={() => {
contextData.stateSetters.setDrawerOpen('data-3');
}}/>
</div>
</Card>
</Col>
</Row>
<div className={drawerOpen === 'data-1' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-1">
</div>
</div>
<div className={drawerOpen === 'data-2' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-2">
</div>
</div>
<div className={drawerOpen === 'data-3' ? 'show-feature-drawer' : 'hide-feature-drawer'}>
<div className="feature-drawer" id="data-3">
</div>
</div>