You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React useState实现的手风琴点击后无法正常展开问题求助

手风琴组件问题排查与修复

问题出在handler函数的逻辑上,当前逻辑仅支持“全关闭/打开单个项”的切换,无法实现“切换到另一项展开”的需求:

当前逻辑代码:

const handler = (index) => {
  setActiveAccordion(currentItem => currentItem === -1 ? index : -1);
};

这段代码的逻辑是:如果当前没有展开的项(currentItem === -1),就打开点击的项;否则无论点击哪个项,都会直接关闭所有展开项。所以当已有项展开时,点击其他项只会关闭现有展开项,无法打开新的项。

修复后的逻辑

调整handler函数,判断点击的索引是否为当前激活项:

  • 若点击的是已展开项,就关闭它(设为-1)
  • 若点击的是未展开项,就激活当前点击的索引(自动关闭之前的展开项)

修改后的代码:

const handler = (index) => {
  setActiveAccordion(currentItem => currentItem === index ? -1 : index);
};

修改后可实现:

  • 点击未展开项:关闭已展开项,打开当前项
  • 点击已展开项:关闭当前项

内容的提问来源于stack exchange,提问作者Cofey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:24:20