ReactJS: onClick gestionnaire qui ne se déclenche pas lorsqu'il est placé sur un composant enfant

J'ai récemment commencé à travailler avec ReactJS. Plus précisément, je suis en utilisant le react-rails ruby gem et react-bootstrap composants.

J'ai une question concernant placer onClick des écouteurs d'événement dans les composants enfants.

Comme vous pouvez le voir dans l'exemple de code ci-dessous, j'ai un composant parent qui "appelle" un composant enfant dans ses render fonction. Dans ce render fonction, j'ai pu Réagir onClick auditeur qui appelle handleToggle lorsqu'il est cliqué.

###* @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>`

Malheureusement, cela ne fonctionne pas de la façon que je l'aurais cru. ToggleIconButton::handleToggle n'est jamais appelé. Au lieu de cela, le onClick écouteur est placé sur IconButton et références ToggleIconButton::handleToggle.

ReactJS: onClick gestionnaire qui ne se déclenche pas lorsqu'il est placé sur un composant enfant


Je ne veux pas ajouter de comportement à IconButton. La façon dont je le vois, pas de logique conditionnelle doit être placé dans IconButton. Tout cela doit faire est de représenter une icône et d'un bouton et de ne pas avoir à vous soucier de tout type de navigateur d'événements. C'est ce que ToggleIconButton est pour.

Alors que je sais que je pourrais envelopper un React Div autour de IconButton et d'écrire un onClick auditeur (j'ai essayé et ça marche), il semble que c'est un peu janky.

Quelqu'un connais un bon moyen de faire cela? Merci les gars!

InformationsquelleAutor Kurt Mueller | 2014-06-08