2016-11-15 3 views
0

Was entspricht in es5 dem folgenden Code?Was entspricht in es5 dem folgenden Code?

constructor(props) { 
    super(props); 

    this.state = { ...this.props }; 
} 
+2

'this.state = Object.assign ({}, this.props)' – chenkehxx

+0

Ich denke Object.assign zählt immer noch als es6. http://www.ecma-international.org/ecma-262/6.0/#sec-object.assign. Mit es5 müssen Sie nur alles kopieren oder verwenden Sie Helfer in Unterstreichung oder lodash –

+0

Sie könnten Babel immer zu ES5-Code kompilieren und sehen, was es tut. – jfriend00

Antwort

1

würde Dieser Code in etwa so aussehen, ohne eine> = ES6 Syntax.

function MyComponent(props) { 
    // super(props) 
    React.Component.call(this, props); 

    // this.state = { ...this.props }; 
    this.state = Object.assign({}, props); 
} 

Babel Website has a repl, die Sie sehen, verwenden können, um genau das, was der kompilierte Code aussehen wird.

In diesem Fall it's quite complex, weil es größtenteils in den Klassen-Dienstprogrammen eingewickelt ist, die Babel verwendet, um ES6-Klassen für ES5 zu füllen.


Das zweite Beispiel für this.state = { editFlag : false, ...this.props } würde ähnlich sein.

this.state = Object.assign({}, editFlag: false, this.props); 
Verwandte Themen