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

React开发中如何避免出现两层root根元素的冗余结构?

React避免渲染冗余根节点的解决方案

你要的效果可以通过以下两种主流方案实现:

  • 方案1:使用React.Fragment(推荐)
    React内置的Fragment组件可以作为根容器包裹多个子元素,不会生成任何真实DOM节点,写法上还可以用<></>的语法糖简化,没有额外学习成本。
    原来的冗余写法:

    // 该写法会额外生成一层div#main-wrapper
    function App() {
      return (
        <div id="main-wrapper">
          <section>内容1</section>
          <section>内容2</section>
          ...
        </div>
      )
    }
    

    优化后的写法:

    // 该写法不会生成额外包裹节点
    function App() {
      return (
        <>
          <section>内容1</section>
          <section>内容2</section>
          ...
        </>
      )
    }
    

    如果你需要给Fragment加唯一标识(比如循环渲染场景),可以用完整的<React.Fragment key={xxx}>写法,不要使用语法糖。

  • 方案2:直接返回元素数组
    React 16及以上版本支持组件直接返回DOM元素数组,只需要给每个元素添加唯一的key属性即可:

    function App() {
      return [
        <section key="section1">内容1</section>,
        <section key="section2">内容2</section>,
        ...
      ]
    }
    

    该方案适合动态生成多根节点的场景,静态场景下不如Fragment写法简洁。

如果原来的div#main-wrapper是用来承载全局样式、类名的,你可以直接把对应的样式规则配置到预置的div#root上,不需要额外新增包裹节点。

最终渲染出来的DOM结构完全符合你的预期:

<div id="root">
    <section></section>
    <section></section>
    . . .
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:00