我最近开始使用ReactJS
. 具体来说,我正在使用react-rails
ruby gem 和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
监听器那里(我已经试过这和它的作品),似乎这是一个有点janky。
有人知道这样做的好方法吗?多谢你们!