2016-11-15 93 views
0

es5中以下代码的等效代码是什么?es5中以下代码的等效代码是什么?

constructor(props) { 
    super(props); 

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

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

+0

我觉得Object.assign仍然被认为ES6。 http://www.ecma-international.org/ecma-262/6.0/#sec-object.assign。随着ES5你只需要所做的一切复制或下划线使用助手或lodash –

+0

你总是可以让巴贝尔编译到ES5代码,看看它做什么。 – jfriend00

回答

1

该代码看起来像这样,而不使用任何> = ES6语法。

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

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

巴贝尔的网站has a repl你可以用它来看看编译后的代码看起来到底是什么样。

在这种情况下,it's quite complex因为它大部分都包含在Babel用于为ES5填充ES6类的类实用程序中。


this.state = { editFlag : false, ...this.props }的第二个例子是类似的。

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