2016-06-16 4 views
0

Предположит среагировать компонент с функцией _onChange как этотКак «это» определенно в функции обратного вызова

_onChange:function() { this.setState({})}; 

передается Эта функция _onChange для хранения в качестве слушателя для события изменения. Так что, когда _onChange называется, это на самом деле называется магазином, магазин как EventEmitter Actaully использовать код как

handler.call(this); 

для вызова handler.Thus это функция _onChange должен быть магазин. Однако это работает в _onChange - это компонент. Поэтому мне интересно, как флюсу удается установить «это» ключевое слово _onChange на фактический компонент при вызове функции?

+0

Вы спрашиваете, как что-то работает или что вы имеете в коде? Вы можете легко сохранить ссылку 'this' и использовать это при работе внутри другой функции ...' var self = this; someFunc (self.setState ...); ' –

+0

Я прошу что-то, что работает, но я думаю, что это ошибка. То, что я пытаюсь спросить, это в _onChange, когда он вызывается, должен быть хранилищем, но не компонентом. –

ответ

0

Поскольку _onChange определяется в компоненте, а не в хранилище, this относится к экземпляру компонента. Когда магазин запускает обратный вызов, он делает это в контексте вашего компонента, поэтому действует this.

Это поведение может отличаться в зависимости от того, объявлен ли "use strict".

В строгом режиме значение этого параметра остается неизменным при входе в контекст выполнения.

Проверьте docs on this.

+0

- это потому, что response.createClass автоматически связывает автоматический метод. –

Смежные вопросы