我正在使用reactjs和bootstrap v3.0,但我找不到任何折叠类,所以我在我的scss中定义了这个。问题是togglebutton不起作用,或者toggleevent没有在div上触发:
toggle(e) {
console.log('testing e',e)
if (e.target.class === 'collapse') {
e.target.className = 'collapse.in'
} else {
e.target.className = 'collapse'
}
}
这是我的按钮:
<button className="btn btn-block" onClick={() => {
this.toggle.bind('demo')
}}>
Open/close
</button>
如何将className从collapse更改为collapse.in,反之亦然?下面是一个代码示例:Codepen
3条答案
按热度按时间wgeznvg71#
你的SCSS和HTML都很好,问题在于你如何使用React。
组件的打开/关闭状态应该用
this.state
中的属性表示,toggle()
函数应该简单地切换该属性。最后,render()
函数应该负责在它呈现的<div>
上设置正确的CSS类。这是你的Codepen updated with my suggestions
我所做的:
open
属性设置为false
;toggle()
方法,使用this.setState()
来切换open
属性的值;render()
函数,根据状态生成<div>
的类名。如果组件状态为open,则类名为"collapse in"
,否则仅为"collapse"
。tjjdgumg2#
还有一个名为“react-bootstrap”的库,它允许将react与bootstrap集成。他们有一个非常简单的例子,使可折叠的div,我分享的代码,我已经改变了根据我想要的。
您可以在代码中的任何地方使用此组件。这将返回一个带有可折叠div的按钮。
ua4mk5z43#
有非常好的库,我不建议重新发明轮子,但使用像react-collapsible这样的东西,你也会有很大的灵活性。
像这样安装:
npm i react-collapsible
然后像这样使用: