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

React中如何将组件作为子元素嵌套?组件嵌套异常求助

问题解决:将formSection嵌入FormTemplate中

问题原因

当前写法里,<FormTemplate />未传入任何children,FormRender只是将模板和section分别独立渲染,导致section出现在模板外部,不符合预期输出。

解决方案1:通过React.cloneElement修改FormRender

利用React.cloneElement克隆传入的formTemplate元素,把formSection作为它的children传入:

import "./styles.css";
import React from "react";

function FormTemplate({ children }) {
  return (
    <>
      <div>Form Template</div>
      <div>{children}</div>
      <div>Form Template End</div>
    </>
  );
}

function FormRender({ formTemplate, formSection }) {
  // 克隆formTemplate并传入children
  return React.cloneElement(formTemplate, {
    children: formSection
  });
}

export default function App() {
  return (
    <div>
      <FormRender
        formTemplate={<FormTemplate />}
        formSection={<section>section</section>}
      />
    </div>
  );
}

解决方案2:直接在App中传递children给FormTemplate

在App组件里,直接把formSection作为FormTemplate的children,再传给FormRender的formTemplate属性:

import "./styles.css";

function FormTemplate({ children }) {
  return (
    <>
      <div>Form Template</div>
      <div>{children}</div>
      <div>Form Template End</div>
    </>
  );
}

function FormRender({ formTemplate }) {
  return formTemplate;
}

export default function App() {
  return (
    <div>
      <FormRender
        formTemplate={<FormTemplate><section>section</section></FormTemplate>}
      />
    </div>
  );
}

两种方案均可实现预期输出,第一种适合需要在FormRender中统一处理模板与内容的场景,第二种写法更直接简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:22:50