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

如何动态调整MUI Grid组件的列宽大小?

报错原因

你传入xs属性的写法错误:JSX中传递变量仅需要一层{}包裹,{{sizeOfPanel}}的写法实际是传递了一个结构为{ sizeOfPanel: sizeOfPanel }的对象,与Grid组件xs属性要求的数字类型不匹配,因此触发报错。

正确实现方案

MUI Grid默认采用12栅格布局,你可以通过state存储Part1的宽度值,Part2的宽度自动用12减去Part1的宽度即可,完整示例如下:

import { useState } from 'react';
import Grid from '@mui/material/Grid';

function DemoComponent() {
  // 初始化Part1的xs尺寸为6
  const [part1XsSize, setPart1XsSize] = useState(6);
  // Part2的xs尺寸自动适配剩余栅格
  const part2XsSize = 12 - part1XsSize;

  // 触发拓宽Part2的方法,可绑定到按钮点击等交互事件
  const handleExpandPart2 = () => {
    setPart1XsSize(3);
  };

  return (
    <>
      <button onClick={handleExpandPart2}>点击拓宽Part2</button>
      <Grid container>
        <Grid item xs={part1XsSize}>Part 1</Grid>
        <Grid item xs={part2XsSize}>Part 2</Grid>
      </Grid>
    </>
  );
}

如果是类组件,将state定义在constructor中,通过this.state读取、this.setState修改即可,核心逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:18:04