我对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?我不知道应用程序的来源,所以我无法通过这种方式进行验证。
{ }
答案 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的属性的值。