Это очень простой вопрос, но я нахожусь в процессе обучения, и после прочтения я не смог найти хорошего объяснения в приведенном ниже коде: Каково назначение линии:
this.buttonClicked = this.buttonClicked.bind(this);
Если я это прокомментирую, программа все еще работает. Скорее всего, с какими-то побочными эффектами, но я их пока не знаю ...
class test extends React.Component {
constructor(props){
super(props)
//this.buttonClicked = this.buttonClicked.bind(this);
}
buttonClicked() {
alert("thank you!")
}
render() {
return (
<div>
<h2>{this.props.text}</h2>
<button onClick = {this.buttonClicked}>click me!</button>
</div>
)
}
}
alert(this.props.text).
Вы можете избежать использования привязки и по-прежнему получать доступ к это, используя функцию стрелки



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


this.buttonClicked = this.buttonClicked.bind(this);
Эта строка в основном позволяет вам использовать this в вашей функции buttonClicked().
Вы не заметите разницы, поскольку фактически не используете this в этой функции.
Попробуйте что-нибудь с this в buttonClicked() с закомментированной строкой привязки, и вы должны получить сообщение об ошибке.
Чтобы избежать привязки вручную, вы можете использовать стрелочную функцию, например:
buttonClicked = () => {
// do something with `this`
}
bind используется для привязки контекста. Объяснение уже дано в других ответах.
вы можете использовать следующий синтаксис вместо закомментированной строки
onClick = {this.buttonClicked.bind(this)}
Примечание. Это создает новую функцию при каждом рендеринге.
Он связывает область выполнения обратного вызова с текущим классом. Таким образом, ссылка на
thisв обратном вызове будет относиться к вашему экземпляру компонента.