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

React中Material UI Grid2无法上下排列问题求助

解决方法

核心问题是Grid容器默认flex方向为横向(row),且你混用了Grid v1和Grid2(v2)组件,可能导致布局逻辑冲突。以下是两种可靠修复方案:

方案1:统一使用Grid2并设置纵向布局

将外层容器替换为Grid2,显式设置direction="column"让子元素纵向排列,同时通过alignItems="center"保证内容水平居中:

import Grid2 from "@mui/material/Unstable_Grid2/Grid2";

<Grid2 container sx={{ marginTop: "5%" }} direction="column" alignItems="center">
    <Grid2 item xs={12}>
    <Divider />
    <Stack spacing={2} direction="column" alignItems="center">
      <h3 style={{ textAlign: "center" }}>
        Wurde Ihnen schon mal durch eigenes Verschulden ein Mietverhältnis gekündigt
      </h3>

      <Stack direction="row" spacing={4}>
        <FormControlLabel
          control={
            <Checkbox
              checked={question1 === "ja"}
              onChange={() => setQuestion1("ja")}
            />
          }
          label="Ja"
        />
        <FormControlLabel
          control={
            <Checkbox
              checked={question1 === "nein"}
              onChange={() => setQuestion1("nein")}
            />
          }
          label="Nein"
        />
      </Stack>
    </Stack>
  </Grid2>

  <Grid2 item xs={12} sx={{ marginTop: 2 }}>
    <Divider />
    <Stack spacing={2} direction="column" alignItems="center">
      <h3 style={{ textAlign: "center" }}>
        Haben Sie aktuell eine Anstellung mit unbefristetem Arbeitsvertrag
      </h3>

      <Stack direction="row" spacing={4}>
        <FormControlLabel
          control={
            <Checkbox
              checked={question2 === "ja"}
              onChange={() => setQuestion2("ja")}
            />
          }
          label="Ja"
        />
        <FormControlLabel
          control={
            <Checkbox
              checked={question2 === "nein"}
              onChange={() => setQuestion2("nein")}
            />
          }
          label="Nein"
        />
      </Stack>
    </Stack>
  </Grid2>
</Grid2>

方案2:使用Grid v1并确保自动换行

如果坚持用Grid v1,显式设置wrap="wrap"(默认值,但显式设置避免异常),每个xs={12}的item会自动占满一行触发换行:

import Grid from "@mui/material/Grid";

<Grid container style={{ marginTop: "5%" }} justifyContent="center" wrap="wrap">
    <Grid item xs={12}>
    {/* 第一个问题的内容 */}
    </Grid>

    <Grid item xs={12}>
    {/* 第二个问题的内容 */}
    </Grid>
</Grid>

额外优化提示

  • 移除h3标签上无效的justifyContent/alignContent属性,这些是flex容器属性,h3不是flex容器,用textAlign="center"实现文字居中更合适。
  • 第二个问题的Checkbox绑定了question1状态,应改为question2,避免两个问题共享同一状态导致逻辑混乱。

内容的提问来源于stack exchange,提问作者Captai-N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:40:21