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

Почему React предупреждает меня о привязке компонента к объекту?

У меня есть этот компонент. Я хочу передать обработчик вызова каждому элементу списка, который я создаю. Если я сделаю это, как показано ниже, bind(this), он работает правильно. Проблема в том, что я получаю это предупреждение от React в консоли: bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call.

var MyList = React.createClass({
  render: function () {
    var listElements = this.props.myListValues.map(function (val) {
      return (
        <ListElement onCallHandler={this.props.parentsCallHandler} val={val} />
        );
    }.bind(this));
    return (
      <ul>
          {listElements}
      </ul>
      );
  }
});

Если я не привязываю его, мои дети не знают о обработчике вызовов. Что я мог сделать по-другому?

PS:

Я знаю о деструктивных назначениях, например, объяснил http://facebook.github.io/react/docs/transferring-props.html#transferring-with-...-in-jsx, но я не хочу использовать Harmony.

4b9b3361

Ответ 1

Ошибка происходит из другого места в коде. Вы получаете сообщение об ошибке, если вы выполняете this.someFunction.bind(something), а что-то не null.

this.someFunction.bind({}, foo);    // warning
this.someFunction.bind(this, foo);  // warning, you're doing this
this.someFunction.bind(null, foo);  // okay!

Сделайте поиск .bind(this в коде, чтобы найти строку нарушения.

Ответ 2

Вот обновленный пример документов

React.createClass({
  onClick: function(event) {/* do something with this */},
  render: function() {
    return <button onClick={this.onClick} />;
  }
});

Обновление в ReactJS Docs