bootstrap React 折叠多
bootstrap React Collapse Multi
我是新来的反应。我有一个带有可折叠链接(嵌套)的侧边栏。如果我为它们中的每一个编写函数,这将是一大堆代码,并且还会变得复杂。有没有办法使用 'this' 来管理所有具有 1 个功能的东西? (不使用手风琴)
function Example() {
const [open, setOpen] = useState(false);
return (
<>
<Button
onClick={() => setOpen(!open)}
aria-controls="example-collapse-text"
aria-expanded={open}
>
click
</Button>
<Collapse in={open}>
<div id="example-collapse-text">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus
terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer
labore wes anderson cred nesciunt sapiente ea proident.
</div>
</Collapse>
</>
);
}
render(<Example />);
这里的基本思想是让一个对象作为状态,属性 名称与 link name/id 相同,属性 值为布尔值:
{
1: false,
2: false,
3: false
}
然后您可以编写一个回调函数,它以 link name/id 作为参数并调用 onClick:
const handleClick = (navId) =>
setNavState((prev) => {
return { ...prev, [navId]: !prev[navId] };
});
在你的 link 然后:
onClick={() => handleClick(nav.id)}
我还设置了一个带有工作示例的沙箱:https://codesandbox.io/s/react-bootstrap-template-forked-2mhh3j
我是新来的反应。我有一个带有可折叠链接(嵌套)的侧边栏。如果我为它们中的每一个编写函数,这将是一大堆代码,并且还会变得复杂。有没有办法使用 'this' 来管理所有具有 1 个功能的东西? (不使用手风琴)
function Example() {
const [open, setOpen] = useState(false);
return (
<>
<Button
onClick={() => setOpen(!open)}
aria-controls="example-collapse-text"
aria-expanded={open}
>
click
</Button>
<Collapse in={open}>
<div id="example-collapse-text">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus
terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer
labore wes anderson cred nesciunt sapiente ea proident.
</div>
</Collapse>
</>
);
}
render(<Example />);
这里的基本思想是让一个对象作为状态,属性 名称与 link name/id 相同,属性 值为布尔值:
{
1: false,
2: false,
3: false
}
然后您可以编写一个回调函数,它以 link name/id 作为参数并调用 onClick:
const handleClick = (navId) =>
setNavState((prev) => {
return { ...prev, [navId]: !prev[navId] };
});
在你的 link 然后:
onClick={() => handleClick(nav.id)}
我还设置了一个带有工作示例的沙箱:https://codesandbox.io/s/react-bootstrap-template-forked-2mhh3j