JSX (React) 中的大括号是什么意思?

IT技术 javascript reactjs ecmascript-6 jsx
2021-03-01 11:57:56

例如,要在 react 中设置样式,您可以执行以下操作

var css = {color: red}

<h1 style={css}>Hello world</h1>

为什么在第二个代码片段中需要在 css 周围使用花括号?

4个回答

大括号是一种特殊的语法,让 JSX 解析器知道它需要将它们之间的内容解释为 JavaScript 而不是字符串。

当您想在 JSX 中使用像变量或引用这样的 JavaScript 表达式时,您需要它们。因为如果你像这样使用标准的双引号语法:

var css = { color: red }

<h1 style="css">Hello world</h1>

JSX 不知道您打算css在 style 属性中使用变量而不是字符串。通过在变量周围放置花括号css,您是在告诉解析器“获取变量的内容css并将它们放在这里”。(从技术上讲是评估内容)

这个过程通常被称为“插值”。

因为这就是 JSX 的设置方式及其解析器的工作方式。<h1 style={css}>技术上不是 JavaScript。它是 JSX,当您想在 JSX 中使用 JS 表达式时,它的语法需要花括号。
2021-05-12 11:57:56
那么为什么它不像 JavaScript 的其余部分那样将缺少引号解释为不是字符串呢?
2021-05-14 11:57:56

如果您不使用变量css,则 JSX 可能如下所示:

<h1 style={ {color: 'red'} }>Hello world</h1>

我猜你对双花括号感到困惑。

所以你知道 JSX 中的大括号意味着process the inner value in JavaScript,所以外大括号正是用于这个目的。

但是该style属性接受一个object. 并且一个对象还需要另一对花括号将其包裹起来。这就是内在的目的。

外大括号告诉 JSX 解析器语法应该被解释为 javascript。使用内部大括号是因为样式变量接受一个对象。

让我们分解一下:

<h1 style={interpret javascritp {interpret the object} }> hello </h1>

当您想在“html”内部(因此在渲染部分内部)使用变量的值时,您可以使用花括号。这只是告诉应用程序获取变量的值并将其放在那里的一种方式,而不是一个词。

“相对于一个词”是什么意思?你的意思是与字符串相反吗?
2021-04-28 11:57:56
@KyleDelaney 如果你做 56+4,它会渲染 56+4,但如果你把它用花括号括起来作为 {56+4},它会渲染 60。
2021-05-15 11:57:56