2016-12-14 12 views
5

natknąłem jakiś składnik kod zdefiniowany stan podzespołów wewnątrz klasy jak następuje reagują:Inicjowanie reagować stan

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

Sposób Nauczyłem React było ogłoszenie stanu wewnątrz konstruktora klasy:

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

Jedyną różnicą mogę myśleć, że inicjowanie stanu w konstruktorze będzie gwarantować państwo pobiera prawidłowo zainicjowany w składniku cyklu życia.

Jakie są różnice między powyższymi dwoma fragmentami kodu? Czy w przypadku fragmentu 1 można bezpiecznie założyć, że stan został prawidłowo ustawiony podczas inicjowania klasy?

Odpowiedz

3

To, na co patrzysz, to ES7+ Property Initializers. Robi się to w ten sposób, ponieważ Facebook wie, że JavaScript zmieni się w przyszłości. Chcą być w stanie poradzić sobie z tymi zmianami.

Według facebook ES7 + inicjalizatory własności

czekaj, przypisując właściwości wydaje się być bardzo bezwzględnej drodze definiowania klas! Masz rację, jednak zaprojektowaliśmy to w ten sposób, ponieważ jest to idiomatyczne. Oczekujemy, że bardziej deklaratywny składnia inicjalizacji nieruchomość przybyć w przyszłej wersji JavaScriptu ....

Oto Facebook link także więcej informacji here

również Link to the proposal