Bootstrap 如何在react中只切换一个项目?

2jcobegt  于 2022-12-07  发布在  Bootstrap
关注(0)|答案(1)|浏览(146)

我正在做一个可折叠的部分使用reactstrap崩溃。
收到的数据是嵌套的,我需要在第二个级别显示折叠按钮,第三个级别将显示数据。
在此显示级别中没有问题,并且在单击按钮时已经在第三级别显示数据。

**问题:**单击任何按钮时,所有可折叠部分都将打开,而不是单击的部分。
**要求:**只有单击的部分的令牌需要显示,再次单击按钮时,它应折叠回来,并且不应与任何其他项目有任何关系。
工作代码段如下,

第一个
请帮助我实现只在所选项目上切换提供的嵌套数据的结果。

jqjz2hbq

jqjz2hbq1#

添加一个标识索引作为处理函数的参数就可以了。

this.state = {
  open: ''
};

toggle = idx => () => {
  this.setState(prevState => ({open: prevState.open === idx ? '' : idx}));
}

<Button onClick={this.toggle(i)}>
<Collapse isOpen={open === i}>

更新

如果希望它们是独立的,则需要一个数组来存储每个状态。

this.state = {
  open: [0, 2]                                // Initial opened item's index
};

toggle = idx => () => {
  this.setState(prevState => ({
    open: this.state.open.includes(idx)       // check whether been expanded
      ? prevState.open.filter(x => x !== idx) // if yes, remove from list
      : [...prevState.open, idx]}             // if no, add to list
    ))
}

<Button onClick={this.toggle(i)}>
<Collapse isOpen={open.includes(i)}>

第一次

相关问题