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

如何为MUI的Card组件设置空数据状态下的默认展示内容

MUI Card组件空状态默认内容实现方法

核心逻辑和DataGrid的NoRowsOverlay一致:通过条件判断数据是否为空,空状态下渲染自定义占位内容,有数据时正常渲染目标组件,不需要引入额外依赖。

单场景快速实现

直接在CardContent内加入空值判断,按状态渲染对应内容即可,参考代码如下:

<Card {...props}>
  <CardHeader title="test" style={{ textAlign: 'center' }} />
  <Divider />
  <CardContent>
    {/* 请替换为和你业务data结构匹配的空值判定条件 */}
    {!data || data.datasets?.every(dataset => dataset.data?.length === 0) ? (
      <div style={{
        minHeight: 240,
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center',
        color: '#6b7280'
      }}>
        暂无数据
      </div>
    ) : (
      <Doughnut data={data} options={options} />
    )}
  </CardContent>
</Card>

注意空值判定规则需要和你使用的Doughnut组件接收的data结构匹配,避免出现误判:如果你的空数据是null、undefined、数据集数组为空、数据集内数值全为0这类不同场景,对应调整判断条件即可。空状态容器建议设置和正常图表一致的最小高度,避免状态切换时页面布局跳动。

多场景通用封装

如果项目内多个Card都需要空状态效果,可以抽离通用空状态组件,封装成可复用的业务卡片组件,减少重复代码:

// 通用Card空状态占位组件
const CardEmptyOverlay = ({ desc = '暂无数据' }) => {
  return (
    <div style={{
      minHeight: 240,
      display: 'flex',
      flexDirection: 'column',
      alignItems: 'center',
      justifyContent: 'center',
      gap: 8,
      color: '#6b7280'
    }}>
      {/* 可在这里插入自定义空状态图标,和全站风格统一 */}
      <span>{desc}</span>
    </div>
  )
}

// 封装带空状态判断的图表卡片
const DoughnutCard = ({ title, data, options, emptyDesc, ...cardProps }) => {
  const isEmpty = !data || data.datasets?.every(dataset => !dataset.data || dataset.data.length === 0)
  return (
    <Card {...cardProps}>
      <CardHeader title={title} style={{ textAlign: 'center' }} />
      <Divider />
      <CardContent>
        {isEmpty ? <CardEmptyOverlay desc={emptyDesc} /> : <Doughnut data={data} options={options} />}
      </CardContent>
    </Card>
  )
}

// 业务页面直接调用即可
<DoughnutCard 
  title="test" 
  data={data} 
  options={options} 
  emptyDesc="当前暂无统计数据"
  {...props} 
/>

如果需要和项目内DataGrid的NoRowsOverlay效果完全统一,直接复用对应空状态的样式、图标配置即可,保持全站视觉一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:06:09