当我发现这个奇怪的东西时,我正在玩JSX。使用以下JSX:
<div>{props.quote}</div>
会产生正确的结果:
但我想在引号周围添加双引号,因此我尝试:
<div>"{props.quote}"</div>
令我惊讶的是,它给出了正确的输出:
我希望得到类似的输出,因为它是字符串文字:
既然{props.quote}
在字符串文本中,它为什么不按字面意思告诉我{props.quote}
?这是巴贝尔的错误吗?
注意:这是一个自我提问和回答
你可以那样做
<div>{`"${props.quote}"`}</div>
输出一点也不奇怪。它按预期工作,没有bug。
您必须了解的是,JSX不是JavaScript。在div
中,这不是字符串文本。它只是一些文本,类似于HTML中的文本节点。它应该是字符串文字的论点没有意义,因为它不是字符串文字。双引号被视为元素中的任何其他文本,而{props.quote}
被视为一个内联JSX表达式,其值将相应地显示出来。您可能会将其与以下内容混淆:
<div>"{"{props.quote}"}"</div>
这里,{…}
是一个内联JSX表达式,在元素中被视为JavaScript表达式。因此,它被解释为一个字符串文本,并将从字面上为您提供“{props.quote}”
。
因为它根本不是一个字符串字面,巴别塔不会这样转置它。使用巴别塔REPL,我们可以看到它被转换成什么:
"use strict";
React.createElement(
"div",
null,
"\"",
props.quote,
"\""
);
如前所述,双引号被视为元素中的任何其他文本。一旦转置,
“\”
props.quote
“\”
双引号作为子项变成文本,并使用
props.quote的值。Babel将开始和结束的
{…}
视为一个内联JSX表达式,而不管它位于何处(除非在字符串文本中的另一个JSX表达式中)。该表达式的计算结果为字符串,在本例中,预测未来的最佳方法是创建它。
而不是显示“diserahkan”,其结果是“diserahkannya”。因此,在尝试替换操作时,并不满足所有条件。为什么会这样?Im使用Java并使用Matcher中的replaceAll方法
为什么以下未有效使用的行(在方法中:getAllDefinedVars)会对最终结果产生影响: List collect=AllVars.Stream().Filter(v->false).collect(Collectors.ToList()); 如果我删除整个方法和调用此方法的一行代码(generateOneSetOfBools中的第一行),我最终会得到另一个结果。 如果... 提到的行对列表
所以浮点运算是不精确的,但这并不能完全解释这里发生的事情:
我收到一个错误: /app处的OS错误/ [Errno 63]文件名太长:"/Users/XXX/test app/templates/jinja 2/{ ' items ':[{ '-':'-',' A': 'a ',' B': 'b ',' C: 'c ',' D': 'd'}]} 我想将json_parse方法的结果的<code>json_dict</code>嵌入到<code>视图中。将复
当我跑的时候 我在Java中得到错误。为什么?这相当于false==false,这是真的。这不是Java特有的,我在其他语言中也得到了相同的结果。这是因为短路评估吗?似乎左右双方仍会/应该进行比较。
问题内容: 我正在使用Python 3.6.1,但遇到了一些非常奇怪的事情。我有一个简单的字典作业错字,花了很长时间才找到。 输出量 代码在做什么?IMO应该什么时候都没有提出。起初,我认为它正在创建一个切片。但是,键入会引发一个。我也输入了控制台,但控制台没有打印任何内容。我以为也许它回来了,但是我不太确定。 我还认为这可能是单行if语句,但这也不应该是正确的语法。 此外,应提出一个。 我很困惑