@bormor

React. Обязательно ли использовать constructor(){...} чтобы задать state на основе props?

Обнаружил, что можно задать state напрямую, на основе props
export default class Task extends Component{
    state ={
        currentText: this.props.text, // вот так
    }
    ...

т.е. задать state на основе пропс, не вызывая constructor.

Это нормальная практика?
В консоли никаких ворнингов реакт не выдает.
Но туториалы, которые я встречал, настаивали что для таких задач нужно обязательно использовать
constructor(props){
     super(props);    
     this.state = {currentText: this.props.currentText};   
 }
  • Вопрос задан
  • 1158 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
class properties экспериментальный синтаксис.
В этом случае поле state задается после (простой пример) вызова конструктора React.Component, в котором инициализируются преданные props. Поэтому когда вы определяете state, props уже определены и доступны.
Если используете transform-class-properties, он входит в stage-0, stage-1, stage-2, то смело используйте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
morozota
@morozota
Это экспериментальный синтаксис
Это нормальная практика
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы