Задать вопрос
@Hellas

В чём разница между constructor и просто state?

export class Test extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: false
    };
  }
}

и

export class Test extends Component {
  state = {
    data: false
  }
}

В обоих вариантах инициализируем состояние компонента.
Как лучше его указывать?
  • Вопрос задан
  • 455 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
miraage
@miraage
Старый прогер
Второй вариант возможен только при наличии babel-plugin-transform-class-properties.

Второй вариант мне удобнее, ибо не надо писать конструкторы.
Так же, благодаря этому плагину можно писать функции с сохранением контекста, которые потом передавать дочерним компонентам. Такой способ очень хорош, ибо нам не надо передавать коллбэки в виде () => this.someCallback() - это сохранит эквивалентность props и React не будет лишний раз вызывать render. Например
class MyComponent extends React.Component {
  onBtnClick = (event) => {
    // correct this
  };

  onBtnMouseUp() {
    // invalid this
  }

  render() {
    return <button onClick={this.onBtnClick} onMouseUp={this.onBtnMouseUp}>hello</button>;
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽