我最近开始使用ReactJS
. 具体来说,我正在使用react-rails
红宝石宝石和react-bootstrap
组件。
我有一个关于onClick
在子组件中放置事件侦听器的问题。
正如您从下面的代码示例中看到的,我有一个父组件,它在其render
函数中“调用”一个子组件。在该render
函数中,我有 ReactonClick
侦听器,在单击它时会调用handleToggle
它。
###* @jsx React.DOM ###
ToggleIconButton = React.createClass
getInitialState: ->
toggleOn: false
handleToggle: (evt) ->
this.setState(toggleOn: !this.state.toggleOn)
render: ->
`<IconButton onClick={this.handleToggle}>Toggle Button</IconButton>`
IconButton = React.createClass
render: ->
# BsButton and BsGlyphicon are React-Bootstrap components
`<BsButton>
<BsGlyphicon glyph={this.props.glyph} />
{" " + this.props.text}
</BsButton>`
不幸的是,这并没有像我想象的那样工作。ToggleIconButton::handleToggle
永远不会被调用。相反,onClick
监听器被放置在IconButton
和引用上ToggleIconButton::handleToggle
。
我不想在IconButton
. 在我看来,不应该将条件逻辑放在IconButton
. 它应该做的只是代表一个图标和按钮,而不必担心任何浏览器事件。这ToggleIconButton
就是为了。
虽然我知道我可以环绕React Div
并在那里IconButton
写一个onClick
监听器(我已经尝试过并且它有效),但这似乎有点笨拙。
有人知道这样做的好方法吗?多谢你们!