在JSX语法中混淆了解构赋值

时间:2017-09-06 22:37:35

标签: javascript reactjs jsx

我对JSX中使用的解构赋值语法非常困惑。在下面的版本1中,我将应用程序打印到控制台,在版本2中,我得到class Int { int x; public Int(int x) { this.x = x; } public Int square() { return new Int(x*x); } /* or: int square() { return x*x; }*/ }

我确实读过在JSX Type Error - Cannot convert undefined or null to object中执行Javascript已被使用,但我还不清楚何时使用什么。我想象一下,因为{ }已经在render()范围内,所以javascript可以直接放入,而无需另外一组括号。

下面哪种语法正确?版本1还是版本2?我不知道应用程序的来源,所以我无法通过这种方式进行验证。

{ }

3 个答案:

答案 0 :(得分:3)

版本2是正确的。

从this.props解构对象声明了两个新的const变量,相当于this-

const app = this.props.app
const locale = this.props.locale

在您的版本1中 - 语法

{app}

相当于

{app:app}

在您的版本2中 - 正确且直接地访问const应用程序。

答案 1 :(得分:1)

如果您尝试获取app的属性,则版本2是正确的。这与您的render()大括号无关,但您将参数传递给函数。

答案 2 :(得分:0)

似乎版本1按原样打印对象,版本2打印了对象的名为app的属性的值。