Это связано с областями видимости, и это то, что ES6 решает путем реализации функций жирной стрелки.
Обычно, когда вы создаете метод внутри класса в JavaScript, этот метод не наследует мгновенно this
, поэтому любая ссылка на this
приведет к ошибке. Чтобы решить эту проблему, вам нужно связать функцию с this
, которая фактически передает экземпляр класса функции в качестве параметра (если вы смотрите в фоновом режиме).
Если вы хотите избежать этой привязки, вы можете просто использовать жирную стрелку, например, так:
handleChange = e => this.setState({[e.target.name]: e.target.value})
В этом базовом примере c я ссылался на this
без привязки метод this
и не получил ошибку, потому что функции жирной стрелки автоматически связываются с this