
*** X 是 JavaScript XML 的缩写,是 的语法扩展,允许在 文件中编写类似 的代码。
在使用 *** X 时,初学者经常会遇到一个常见错误,即 “ *** X 表达式必须有一个父元素”。如果在一个表达式中返回多个元素,而没有用父元素包装,就会出现这种错误。
这个错误也与 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?” (相邻的 *** X 元素必须用外层标签封装)错误。
在本文中,您将了解在使用 React 时避免这种常见障碍的不同解决方案。
在 *** X 中,有一条规则规定必须始终返回单个元素。这一规则也适用于 React,这意味着每个只能返回一个根元素。
这是因为在呈现组件时,React 会创建一个虚拟 DOM 树,该树与最终呈现到页面上的 HTML 相对应。如果 *** X 中有多个根元素,React 就不知道如何处理它们,从而导致 “ *** X expressions must have one parent element” 错误或 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?”
例如,如果您尝试呈现以下 *** X 代码:
function App() {
return (
<h1>Hello, world!</h1>
<p>This is a paragraph.</p>
)
}
您会收到 “ *** X expressions must have one parent element” 的错误信息:

*** X 表达式必须有一个父元素错误
或 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?” 错误:

Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?
这是因为返回了两个根元素( <h1> 和 <p> )。
*** X 的操作类似于函数,因为函数不能返回多个值(除非它们被括入数组中,而数组被视为单个值)。
function myFunc() {
return value1;
return value2;
}
render 函数中的第二条返回语句无法执行,因为之一条返回语句会一直执行,导致第二条返回语句无法执行。
修复此错误的 *** 主要有三种,分别是
解决 “ *** X expressions must have one parent element” 错误的一个最直接的 *** 是将多个 *** X 元素封装在一个父元素中,如 <div>。
这样做可以将元素分组并作为一个单元呈现。例如,请看下面的组件:
function App() {
return (
<div>
<h1>Hello, world!</h1>
<p>This is a paragraph.</p>
</div>
)
}
在本例中, <h1> 和 <p> 元素被包裹在一个 <div> 元素中,该元素是父元素。
解决 “ *** X expressions must have one parent element” 或 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?” 错误的 *** 是使用 *** X 片段。
片段是 React 的一项内置功能,它允许您对子元素列表进行分组,而无需在 DOM 中添加额外的节点。您可以使用片段将多个元素封装在一个父元素中,而不会在渲染的 HTML 中添加额外的 DOM 节点。例如,下面是一个组件:
function App() {
return (
<>
<h1>Hello, world!</h1>
<p>This is a paragraph.</p>
</>
)
}
在本例中,使用了一个 *** X 片段(<> 和 </> )来封装多个元素。该片段充当父元素。
最后,解决 “ *** X expressions must have one parent element” 错误的另一种 *** 是使用 React.Fragment 组件而不是普通的元素。
这与使用 *** X 片段的效果类似,但它更明确一些,如果你想给父元素一个特定的键或其他道具,它可能会很有用。例如,下面是一个组件:
function App() {
return (
<React.Fragment>
<h1>Hello, world!</h1>
<p>This is a paragraph.</p>
</React.Fragment>
)
}
在本例中,使用了 React.Fragment 组件而不是普通的
元素作为父元素。它将多个元素包装在标签内,这样就可以将元素组合在一起,而无需在渲染的 HTML 中添加额外的节点。
使用 React.Fragment 组件需要导入 React。它还允许你为片段本身添加道具、 className, style,和 id ,这在你想为片段中的元素组应用样式或其他属性时非常有用。
在使用 React 中的三元运算符处理条件语句时,经常会遇到错误信息 “ *** X expressions must have one parent element” 或 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?”。
当在条件语句中返回多个元素时,就会出现这种情况。在这种情况下,React 无法正确呈现这些元素,因此会出现上述错误。
function App() {
return (
<div>
{condition ? (
<h1>Heading 1</h1>
<p>Paragraph 1</p>
) : (
<h2>Heading 2</h2>
<p>Paragraph 2</p>
)}
</div>
)
}
您可以使用本文介绍的三种 *** 中的任何一种来修复此错误。更好使用 React 片段 (<> 和 </>) 或 <div> 元素。
function App() {
return (
<div>
{condition ? (
<>
<h1>Heading 1</h1>
<p>Paragraph 1</p>
</>
) : (
<>
<h2>Heading 2</h2>
<p>Paragraph 2</p>
</>
)
}
</div>
)
}
“ *** X expressions must have one parent element” 错误或 “Adjacent *** X elements must be wrapped in an enclosing tag. Did you want a *** X fragment <>…</>?” 这是初学者在学习 React 时经常遇到的障碍。
使用 <div> 封装器是最简单的解决方案,但它会在 DOM 中添加不必要的 div。片段提供了一种更简洁的解决方案,而不会在 DOM 中添加额外的节点。
现在轮到你了: 您遇到过这个问题吗?你是如何解决的?你还使用过本文未涉及的其他 *** 吗?请在评论中告诉我们!
谁在尝试访问某些网站时没有遇到过更新Java的请求? 虽然许多人通过交互式网站功能熟悉Java,但用户可能不太熟悉JavaScript——或者,实际上,他们可能错误地认为两者是相同的。 在本文中,我们将讨论JavaScript 是什么以及Java和JavaScript之间的区别。然后我们将概...
每台连接到Internet的计算机都有一个Internet协议 (IP) 地址。但是,并非所有IP地址的外观或行为都相同。 如果您使用计算机网络或服务器,了解动态IP和静态IP之间的区别至关重要。通过详细了解每个协议,您可以选择最适合您需求的解决方案。 在本文中,我们将讨论静态和动态IP之间...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...
对于初学者和那些刚刚进入WordPress开发的人来说,PHP是您可以开始的最佳起点之一。这是一种超级简单直接的语言,使其成为之一,因此相当容易上手,它构成了在线开发的支柱。另外,如果你想在WordPress后端工作,你肯定需要学习它。 但是,如果您不想在昂贵的大学课程上花费数月或数年时间怎么...
Node.js和PHP是Web开发工作中常用的两种基本Web技术。两者都为服务器端开发做出了贡献,Node.js甚至同时服务于客户端和服务器端开发。 PHP已经为开发人员服务了近3年,现在它为78%的网络提供支持。相比之下,Node.js相对较新,但扩展速度非常快,由于其全栈开发能力而成为流行...
薪水可能是某些人的禁忌话题,但如果您是WordPress开发人员,或者正在考虑从事WordPress开发工作,那么了解人们的收入对于最大化您自己的赚钱能力至关重要。 所以让我们谈谈这个秘密——让我们谈谈WordPress开发人员的平均工资。这样,您将确切地知道自己的价值(以及如何赚取更多)。...