Задать вопрос
  • Почему события React работают только через стрелочные функции?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Потому-что когда вы вызываете метод на объекте:
    obj.method(); // вызываем метод
    или:
    this.method(); // вызываем метод
    Ссылка на объект указанная перед точкой будет использована в качестве контекста и будет доступна в функции, через ключевое слово this.

    Когда вы передаете метод без вызова:
    onClick={obj.method} // не вызываем метод
    или:
    onClick={this.method} // не вызываем метод
    Передается лишь метод, а контекст теряется.

    Чтобы не терялся контекст при передаче метода в слушатель, можно использовать функцию bind. На вашем примере:
    class MainPage extends Component {
      constructor(props) {
        super(props);
        this.state = {
          color: 'red'
        };
        this.changeStylesForCaption = this.changeStylesForCaption.bind(this); // привязываем контекст
      }  
      
      changeStylesForCaption() {
        this.setState({
          color: 'black'
        });
      }
    
      render() {
        return (
          <h1 onClick={this.changeStylesForCaption} style={{ color: this.state.color }}>gleb</h1>
        );
      }
    
    }


    Стрелочные функции контекста не имеют и используют контекст того окружения, где они определены.
    Ответ написан
    1 комментарий
  • Что нужно иметь и знать в фреймворке React джуну?

    @artemmityushov
    Конечно же возможно я живу в какой-то другой вселенной, но мне было бы интересно посмотреть сколько придет людей на должность джуна имея все перечисленные знания.
    Ответ написан
    1 комментарий