React onClick événement sur le composant

J'ai un composant React appelé {[1] } qui a beaucoup d'enfants <SensorItem /> s (un autre composant React). Je veux pouvoir déclarer un événement onClick sur chaque <SensorItem /> depuis <SensorList />. J'ai essayé de faire ce qui suit:

sensorSelected: function(sensor) {
    console.log('Clicked!');
},

render: function() {
    var nodes = this.state.sensors.map(function(sensor) {
        return (
            <SensorItem onClick={ this.sensorSelected } />
        );
    }.bind(this));

    return (
        <div className="sensor-list">
            { nodes }
        </div>
    );
}

Inutile de dire que je ne reçois aucun " cliqué!"venir dans ma console. L'inspecteur React dans Chrome indique qu'un événement onClick est enregistré, avec le corps de la fonction ci-dessus comme il se doit.

Je conclus, par conséquent, que je ne peux pas enregistrer onClick événements sur le balises <SensorItem /> réelles (Je ne sais pas pourquoi c'est, cependant). Comment dois-je aller sur la réalisation de ce le contraire?

29
demandé sur nilgun 2015-02-02 01:44:51

1 réponses

Cela dépend de la définition de votre composant SensorItem. Parce que SensorItem n'est pas un élément DOM natif mais, comme vous l'avez dit, un autre composant React, onClick {[5] } tel que défini ici est simplement une propriété de ce composant. Ce que vous devez faire est, à l'intérieur du composant SensorItem, de passer l'accessoire onClick à l'événement onClick d'un composant DOM:

var SensorItem = React.createClass({
  render: function() {
    return (
      <div className="SensorItem" onClick={this.props.onClick}>
       ...
      </div>
    );
  }
});
63
répondu Bogdan Dumitru 2015-02-02 06:23:54