ReactJS: обработчик onClick не запускается при размещении на дочернем компоненте

Я недавно начал работать с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 слушатель там (я пробовал это, и это работает), кажется, что это немного отвратительно.

Кто-нибудь знает хороший способ сделать это? Спасибо, парни!

Ответы на вопрос(2)

Ваш ответ на вопрос