reactjs - React Bootstrap手风琴默认ActiveKey不起作用
问题描述
我创建了一个沙盒示例来说明问题所在: https ://codesandbox.io/s/react-bootstrap-accordion-14pcp
我正在使用 defaultActiveKey 设置手风琴,但无法正常工作。这是我用来在单击项目时设置活动类的代码。useState("2")
defaultActiveKey 应该在哪里。
const [activeId, setActiveId] = useState("2");
function toggleActive(id) {
if (activeId === id) {
setActiveId(null);
} else {
setActiveId(id);
}
}
然后我像这样渲染它:
<Accordion defaultActiveKey={activeId}>
{faq.questions.map((question, index) => {
return (
<Card className="rounded-lg mb-3 border-0" key={index}>
<Accordion.Toggle
as={Card.Header}
eventKey={index + 1}
onClick={() => toggleActive(index + 1)}
className={activeId === index + 1 ? "active" : null}
>
{question.title}
</Accordion.Toggle>
<Accordion.Collapse eventKey={index + 1}>
<Card.Body>
<p className="text-muted">{question.text}</p>
</Card.Body>
</Accordion.Collapse>
</Card>
);
})}
</Accordion>
faq.questions
是一个包含一些数据的数组。我还必须为每个索引添加 +1 以{index + 1}
使其正常工作,否则第一个手风琴项目不起作用。
有趣的是,如果我在.map()
没有动态代码的情况下设置它并执行它们,它可以工作,例如:
<Accordion defaultActiveKey={activeId}>
<Card className="rounded-lg mb-3 border-0">
<Accordion.Toggle
as={Card.Header}
eventKey="0"
onClick={() => toggleActive("0")}
className={activeId === "0" ? "active" : null}
>
Question
</Accordion.Toggle>
<Accordion.Collapse eventKey="0">
<Card.Body>
<p className="text-muted">
Answer
</p>
</Card.Body>
</Accordion.Collapse>
</Card>
</Accordion>
解决方案
推荐阅读
- node.js - 为什么在 mac os 上无法通过 npm install 安装 dualshock 驱动程序?
- python - 可视化决策树时列表索引超出范围
- excel - 从复选框菜单自动生成PowerPoint演示文稿
- arrays - 从 UIButton 操作更改 uitextField placeHolder
- google-sheets - 使用 Google 表格查询中位数和分组依据和位置
- spring - 我可以在一定的时间间隔内在 Spring Boot (JPA) 中创建实体吗
- apache-camel - 如何在 Camel 3.4.2 的 CamelContext 中添加自定义 MDCUnitOfWork
- azure-devops - 如何在 Azure DevOps Server Release 中覆盖变量库
- python - 如何测试 GET 请求在 Python Flask 中是否有效
- continuous-integration - Gitlab - 手动作业阻止合并请求