gpt4 book ai didi

javascript - 如何在引导 Accordion 中将加号切换为减号,反之亦然

转载 作者:行者123 更新时间:2023-12-04 10:01:06 25 4
gpt4 key购买 nike

我正在醒来 Accordion使用 react-bootstrap我已经成功创建了 Accordion ,现在我想在打开显示时为每个标题提供切换,如加减 - 关闭时唱歌显示加号,但我无法处理该事件

我做了什么

import React from "react";
import "./styles.css";
import { Accordion, Card } from "react-bootstrap";

const App = () => {
const data = [
{ name: "mike", age: 22 },
{ name: "clive", age: 25 },
{ name: "morgan", age: 82 }
];
return (
<div className="App">
<Accordion defaultActiveKey="0">
{data.map((item, index) => (
<Card>
<Accordion.Toggle as={Card.Header} eventKey={index}>
{item.name}
</Accordion.Toggle>
<Accordion.Collapse eventKey={index}>
<Card.Body>{item.age}</Card.Body>
</Accordion.Collapse>
</Card>
))}
</Accordion>
</div>
);
};
export default App;

I am using this

Working Code sandbox

最佳答案

您可以创建自定义 Accordion.Toggle# 定制 onclick事件,也使用 useState处理设置 + 的切换事件/-迹象:

这是一个片段或 sandbox :

import React, { useState } from "react";
import "./styles.css";
import { Accordion, Card, useAccordionToggle } from "react-bootstrap";

function CustomToggle({ children, eventKey, handleClick }) {
const decoratedOnClick = useAccordionToggle(eventKey, () => {
handleClick();
});

return (
<div className="card-header" type="button" onClick={decoratedOnClick}>
{children}
</div>
);
}

const App = () => {
const [activeKey, setActiveKey] = useState(0);

const data = [
{ name: "mike", age: 22 },
{ name: "clive", age: 25 },
{ name: "morgan", age: 82 }
];
return (
<div className="App">
<Accordion defaultActiveKey={0} activeKey={activeKey}>
{data.map((item, index) => (
<Card key={index}>
<CustomToggle
as={Card.Header}
eventKey={index}
handleClick={() => {
if (activeKey === index) {
setActiveKey(null);
} else {
setActiveKey(index);
}
}}
>
{item.name}
{activeKey === index ? "-" : "+"}
</CustomToggle>
<Accordion.Collapse eventKey={index}>
<Card.Body>{item.age}</Card.Body>
</Accordion.Collapse>
</Card>
))}
</Accordion>
</div>
);
};
export default App;

关于javascript - 如何在引导 Accordion 中将加号切换为减号,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61816637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com