[英]Why does this JSX expression produce an odd result?
输出一点也不奇怪。 它正在按预期工作,并且没有错误。
您必须了解的是JSX不是JavaScript。 在div
内部,这不是字符串文字。 这只是一些文本,类似于HTML中的文本节点。 认为它应该是字符串文字的说法没有意义,因为它不是字符串文字。 双引号与元素内的任何其他文本一样,而{props.quote}
被视为内联JSX表达式,其中相应地显示其值。 您可能将其与以下内容混淆了:
<div>"{"{props.quote}"}"</div>
在这里, { … }
是内联JSX表达式,被视为元素内的JavaScript表达式。 因此,它被解释为字符串文字,并且将在字面上给您"{props.quote}"
。
因为从根本上讲它不是字符串文字 ,所以Babel不会像这样编译它。 使用Babel REPL ,我们可以看到它被转换为:
"use strict";
React.createElement(
"div",
null,
"\"",
props.quote,
"\""
);
如前所述,双引号与元素内的任何其他文本一样。 一旦被编译, <div>"{props.quote}"</div>
只是一个div
元素,其以下文本作为子元素:
"\\""
props.quote
"\\""
双引号成为儿童的文字文本,并使用props.quote
的值。 Babel将打开和关闭{ … }
视为内联JSX表达式,而不管其在何处(除非在字符串文字内的另一个JSX表达式内)。 该表达式的计算结果为字符串The best way to predict the future is to create it
在这种情况下The best way to predict the future is to create it
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.