2016-12-14 2 views
5

я наткнулся на некоторые реагируют код, который определил компонент состояния внутри класса, как следует:Initializing реагировать компонент состояния

// Snippet 1 
class Sample extends React.Component { 
    state = { 
     count: 0 
    } 
} 

Как я узнал Реагировать было объявить состояние внутри конструктора класса:

// Snippet 2 
class Sample extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      count: 0 
     }; 
    } 
} 

Единственное различие, которое я могу думать о том, что при инициализации состояния в конструкторе будет гарантировать государство получает инициализирован в компоненте жизненного цикла.

В чем разница между приведенными выше фрагментами кода? В фрагменте 1, можно ли предположить, что состояние должно быть правильно задано при инициализации класса?

ответ

3

Что вы ищете, это ES7+ Property Initializers. Это делается так, потому что Facebook знает, что Javascript изменится в будущем. Они хотят иметь возможность справиться с этими изменениями.

Согласно facebook ES7 + Инициализаторам собственности

Подождите, сопоставляя свойства кажется очень императивным способом определения классов! Вы правы, однако, мы разработали его таким образом , потому что он идиоматичен. Мы ожидаем более декларативный синтаксис для свойство инициализации, чтобы прибыть в будущих версиях JavaScript ....

Вот Facebook link Также подробнее here

также Link to the proposal

Смежные вопросы