You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSX报Adjacent JSX elements must be wrapped in an enclosing tag,已包裹仍报错怎么解决

错误原因排查

直接导致Adjacent JSX elements must be wrapped in an enclosing tag报错的核心原因是:你仅对map循环内部的JSX做了包裹,没有处理组件return语句的根节点,当前return语句直接返回了<h2>和<div>两个同级的根元素,不符合React单根节点的要求。

同时你的代码还存在其他几处语法/逻辑错误,修复后才能正常运行:

  • 变量声明顺序错误:你先调用data.map()生成dataList,之后才声明赋值data变量,执行时会因为data未定义抛出报错
  • 转义符书写错误:你写的nbsp需要改为HTML转义符&nbsp;才能正常显示空格
  • 作用域混淆:组件内部定义的data变量属于组件内部作用域,在ReactDOM.render中直接写data={ data }会因为找不到data变量抛出报错
  • 列表渲染缺少key:map循环生成JSX列表时需要给每个项添加唯一key属性,避免React抛出性能警告

修复后完整代码

import React from 'react';
import ReactDOM from 'react-dom';

function DataList() {
  // 先声明data再调用map方法
  const data = [
    { name: 'Daniel', age: 25 },
    { name: 'John', age: 24 },
    { name: 'Jen', age: 31 },
  ];

  const dataList = data.map(item => (
    // 给列表项添加唯一key
    <>
      <span key={item.name}>{item.name}</span>&nbsp;<span>{item.age}</span>
    </>
  ))

  // 外层用Fragment包裹所有返回元素,不会生成额外DOM节点
  return (
    <>
      <h2><span>Name</span>&nbsp;<span>Age</span></h2>
      <div>{dataList}</div>
    </>
  );
}

ReactDOM.render(
  <DataList />,
  document.getElementById('root')
);

如果需要通过props从外部传入data,可调整为以下写法:

import React from 'react';
import ReactDOM from 'react-dom';

// 组件内部从props取数据
function DataList(props) {
  const dataList = props.data.map(item => (
    <>
      <span key={item.name}>{item.name}</span>&nbsp;<span>{item.age}</span>
    </>
  ))
  return (
    <>
      <h2><span>Name</span>&nbsp;<span>Age</span></h2>
      <div>{dataList}</div>
    </>
  );
}

// 外部声明数据再传入组件
const data = [
  { name: 'Daniel', age: 25 },
  { name: 'John', age: 24 },
  { name: 'Jen', age: 31 },
];
ReactDOM.render(
  <DataList data={ data } />,
  document.getElementById('root')
);

内容的提问来源于stack exchange,提问作者Pulasthi Aberathne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:24:03