关于React中return内HTML与JS语法规则的疑问
关于React JSX中{}使用的疑问解答
你搞混了两个完全不同的语法场景,拆解清楚就明白了:
为什么{}里的
<li>不用``包裹?
JSX本身就是JavaScript的语法扩展,你写的<li>根本不是HTML字符串,而是React.createElement('li', null, ...)的语法糖。在JSX的{}里,你可以直接放合法的JavaScript表达式——包括JSX元素(本质是React.createElement的调用结果)。比如:{ // 这里是JS表达式,直接返回JSX元素 [1,2,3].map(num => <li key={num}>{num}</li>) }这里的
<li>是JS对象(React元素),不是字符串,自然不需要用模板字符串``包裹。为什么
p.name要写成${p.name}?
你说的${p.name}是JavaScript的模板字符串语法,只有当你在``(反引号)包裹的字符串里插入变量时才需要用它。比如在原生JS里拼接HTML字符串:// 原生JS用字符串拼HTML,才需要${}插变量 const htmlStr = `<li>${p.name}</li>`;但在JSX里,你根本不需要这么做——直接在
<li>里用{p.name}就行,这是JSX嵌入JS变量的语法,和模板字符串的${}没关系。
总结一下:JSX里的{}是用来嵌入JS表达式的,表达式可以是JSX元素、变量、函数调用等;而${}是JavaScript模板字符串的变量插入语法,只有在写字符串的时候才用,和JSX的<>语法完全是两码事。
内容的提问来源于stack exchange,提问作者Romi Tsimerman
相关产品推荐
相关产品推荐

