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

React组件复用:如何封装重复的外层包裹代码实现逻辑复用?

解决方案

方案1:封装公共布局组件(最推荐)

你这个场景完全可以通过React原生的children插槽能力实现布局复用,操作成本最低、可维护性最高。

步骤1:抽离公共代码为独立布局组件

把两段重复的布局逻辑抽成单独组件,将变化的子组件位置用children占位即可:

// 新建CommonLayout.jsx
// 注意提前导入你用到的MaterialUI相关组件、主题、样式文件
import appTheme from '你的主题配置路径';
import classes from '你的样式文件路径';

export default function CommonLayout({ children }) {
  // 原两个组件中重复的业务逻辑(代码中...部分的公共逻辑)都可以放在这里

  return (
    <ThemeProvider theme={appTheme}>
      <div className={classes.root}>
        <CssBaseline />
        <AppBar >
          <Toolbar className={classes.toolbar}>
            {/* 原Header的公共代码 */}
          </Toolbar>
        </AppBar>
        <main className={classes.content}>
          <div className={classes.appBarSpacer} />
          <Container maxWidth="lg" className={classes.container}>
            <Grid container spacing={3}>
              <Grid item xs={12}>
                <Paper className={classes.paper}>
                  {/* 变化的子组件位置用children占位 */}
                  {children}
                </Paper>
              </Grid>
            </Grid>
          </Container>
        </main>
      </div>
    </ThemeProvider>
  );
}

步骤2:在业务场景直接调用

如果原两个组件没有独有逻辑,可以直接嵌套使用:

// 渲染MyComponent1的场景
<CommonLayout>
  <MyComponent1 />
</CommonLayout>

// 渲染MyComponent2的场景
<CommonLayout>
  <MyComponent2 />
</CommonLayout>

如果原两个组件还有各自独有的逻辑,简化后的代码如下:

// 原SameCodeToWrapComponent1简化后
import CommonLayout from './CommonLayout';
export default function SameCodeToWrapComponent1() {  
  // 组件1独有的业务逻辑写在这里
  return (
    <CommonLayout>
      <MyComponent1 />
    </CommonLayout>
  );
}

// 原SameCodeToWrapComponent2简化后
import CommonLayout from './CommonLayout';
export default function SameCodeToWrapComponent2() {  
  // 组件2独有的业务逻辑写在这里
  return (
    <CommonLayout>
      <MyComponent2 />
    </CommonLayout>
  );
}

其他可选方案

  • 高阶组件(HOC):如果需要给子组件注入公共props、或者需要批量给一批组件加统一布局,可选择高阶组件实现
  • Render Props:如果子组件需要使用布局组件内部的状态、方法,可选择Render Props的方式传参实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:51:03