#javascript #reactjs #class #binding #this
Вопрос:
Я так долго искал и читал об этом вопросе, но все еще не могу прийти в себя. Поэтому в компоненте класса React вы бы написали такие методы, как этот:
class Test extends React.Component {
constructor(props){
super(props)
this.method = this.method.bind(this)
}
method() {
...
}
}
Если «это» не привязано по умолчанию, почему мы можем использовать «this.method»? Что означает «это» в «этом.методе» и «привязке.(это)». Являются ли они одинаковыми?
Эта строка: this.method = this.method.bind(this)
действительно сбивает меня с толку. Пожалуйста, помогите мне объяснить каждое из 3 «это» в этой строке. Спасибо.
Ответ №1:
Привязка метода к «этому» полезна, когда вы передаете его дочернему компоненту. Когда вы делаете это, обычно необходимо иметь возможность изменять локальное состояние родительского компонента, когда дочерний компонент выполняет этот метод. Это все равно что сказать
«Я хочу, чтобы этот метод был привязан к этому классу, то есть, если он вызывается из любого места, ссылки на «это» внутри этого метода относятся к ЭТОМУ классу».
Вот интересная статья, которая подробно объясняет это:
https://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/
Комментарии:
1. Я просто добавляю сюда еще одну ссылку, которая объясняет, почему вам нужно привязывать методы freecodecamp.org/news/…