我最近开始使用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监听器(我已经尝试过并且它有效),但这似乎有点笨拙。
有人知道这样做的好方法吗?多谢你们!