Подтвердить что ты не робот

Пропустить аргумент для обработчика click

У меня вопрос о передаче аргументов для Обработчиков кликов React. У меня есть следующий код, но по какой-то причине аргумент node не передается функции переключения. Не так ли? Он определен таким образом, потому что он является рекурсивным компонентом.

var Element = React.createClass({

    toggle: function(e,node){

    },

    render: function(){

        var nodes = this.props.children.map(function(n){

                return <Element node={n} text={n.text} children={n.children}  />

        });

        return (
               <span onClick={this.toggle.bind(this,this.props.node)}>{this.props.text}</span>

        );
    }

});
4b9b3361

Ответ 1

Function.prototype.bind связывать аргументы, начинающиеся слева. Правильный способ получения аргумента node - искать его в самой левой позиции списка аргументов:

toggle: function(node, event) {
  console.log('node', node);
  console.log('event', event);
}

См. http://jsfiddle.net/8xxfgce7/ для примера.

Ответ 2

Хотя приведенный выше ответ верен. Вот еще один пример, как передать как событие, так и параметр на onClick.

Элемент активации события, например, кнопка:

<button onClick={this.editTask.bind(this, item._id)}>
  Edit item
</button>

Функция обработчика событий:

editItem(id, event) {
  event.preventDefault() // Prevents default form submission
  console.log('id: ', id) // Prints the item id 
  .
  .
  .
}