如何在 bootstrap 手风琴中将加号切换为减号和 vice-versa
How to toggle plus to minus and vice-versa in bootstrap Accordion
我正在使用 react-bootstrap
在 Accordion
上工作 我已经成功创建了手风琴,现在我想为每个 header 提供切换,例如打开时的加减 -关闭时唱歌显示加号,但我无法处理该事件
我做了什么
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;
您可以只创建一个带有自定义 onclick
事件的自定义 Accordion.Toggle#
,也可以使用 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;
我正在使用 react-bootstrap
在 Accordion
上工作 我已经成功创建了手风琴,现在我想为每个 header 提供切换,例如打开时的加减 -关闭时唱歌显示加号,但我无法处理该事件
我做了什么
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;
您可以只创建一个带有自定义 onclick
事件的自定义 Accordion.Toggle#
,也可以使用 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;