1

In dem Beispiel rectnativeexpress Website here, state = {count: 0} wird anstelle eines Konstruktors verwendet, um die Zählvariable zu initialisieren.Wann können wir vermeiden, einen Konstruktor zu verwenden, um den Zustand zu initialisieren?

In den offiziellen Facebook-docs here, haben sie gesagt

Im Allgemeinen Sie Zustand im Konstruktor initialisieren sollte, und dann setState anrufen, wenn Sie es ändern möchten.

Also habe ich einen Konstruktor count auf die gleiche Weise zu initialisieren:

constructor(props) { 
    super(props); 
    this.state = {count: 0} 
} 

Der Code die gleiche Art und Weise zu funktionieren scheint (zumindest auf der Oberfläche), so was ist der Unterschied zwischen einem Konstruktor zu schaffen und initialisieren count wie im Beispiel?

+1

Der Code auf der Website ist nicht Javascript (noch nicht) –

+0

Ich verstehe nicht. Wenn es ES6 ist, ist es nicht dasselbe? [ES6 vs JS] (https://softwareengineering.stackexchange.com/questions/306846/different-between-es6-and-javascript) Oder gibt es noch etwas, das ich nicht bekomme –

+0

Es ist ein Vorschlag wie Sag1v erklärt. –

Antwort

1

In dem Beispiel, das Sie als link anhängen, verwenden sie die ES Class Fields, die ein Vorschlag (derzeit in Phase 2) ist.
Das bedeutet, dass Sie einige zusätzliche Presets/Plugins von babel (oder einem anderen JavaScript-Compiler) benötigen, um es zu unterstützen, da es noch nicht Teil der offiziellen Spezifikationen von ECMAScript ist. In dem anderen Beispiel verwenden Sie die class constructor, die Teil von ES2015 ist.

Beide erhalten Sie die gleichen Ergebnisse, eine Eigenschaft an die Instanz der Klasse angehängt.
das ist im Grunde nur ein syntaktischer Zucker für die prototype pattern.

0

Dies hat mehr mit ES6-Klassen zu tun.

getFullName() { 
    return this.props.firstName + this.props.lastName; 
} 

Die obige Funktion löst einen Fehler aus, der besagt, dass Requisiten nicht definiert sind.

getFullName =() => { 
    return this.props.firstName + this.props.lastName; 
} 

Der obige Code wird den Kontext this in die Funktion übergeben und wird gut funktionieren.

Ähnlich Ihre

state = {count: 0} 

im Kontext der Klasse ausgeführt wird, [mit entsprechenden this].

Das gleiche state muss mit this.state im Konstruktor aufgerufen werden, um es an den entsprechenden Kontext zu binden.

Verwandte Themen