我怎样才能关闭手风琴?
How could I make the accordion close?
需要一些集思广益的想法,基本上正如您在代码中看到的那样,当我单击手风琴的标题时,索引将通过标题。由于 class 名称中的 'active' 属性,手风琴关闭。现在我想实现一个功能,如果你点击一个已经打开的手风琴,它就会关闭。我尝试了多种方法,但没有找到解决方案。
提前致谢
const Accordion = ({ accordionInfo }) => {
const [open, setOpen] = useState(null);
const onTitleClick = (index) => {
setOpen(index);
};
const accordion = accordionInfo.map((info, index) => {
const active = open === index ? 'active' : false;
return (
<div key={info.title}>
<div className='ui styled accordion'>
<div
className={`${active} title`}
onClick={() => onTitleClick(index)}>
<i className='dropdown icon'></i>
{info.title}
</div>
<div className={`${active} content`}>
<p>{info.description}</p>
</div>
</div>
</div>
);
});
return <div>{accordion}</div>;
};
我认为如果索引与 open
相同,则将 open
设置为 null
应该可以满足您的需要
类似于:
const onTitleClick = (index) => {
setOpen(index === open ? null : index);
};
需要一些集思广益的想法,基本上正如您在代码中看到的那样,当我单击手风琴的标题时,索引将通过标题。由于 class 名称中的 'active' 属性,手风琴关闭。现在我想实现一个功能,如果你点击一个已经打开的手风琴,它就会关闭。我尝试了多种方法,但没有找到解决方案。
提前致谢
const Accordion = ({ accordionInfo }) => {
const [open, setOpen] = useState(null);
const onTitleClick = (index) => {
setOpen(index);
};
const accordion = accordionInfo.map((info, index) => {
const active = open === index ? 'active' : false;
return (
<div key={info.title}>
<div className='ui styled accordion'>
<div
className={`${active} title`}
onClick={() => onTitleClick(index)}>
<i className='dropdown icon'></i>
{info.title}
</div>
<div className={`${active} content`}>
<p>{info.description}</p>
</div>
</div>
</div>
);
});
return <div>{accordion}</div>;
};
我认为如果索引与 open
相同,则将 open
设置为 null
应该可以满足您的需要
类似于:
const onTitleClick = (index) => {
setOpen(index === open ? null : index);
};