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

如何使用react-chartjs-2实现30天缺勤数据图表的移动端响应式适配

解决方案
  • 第一步:补充响应式核心配置项
    react-chartjs-2 默认支持响应式适配,你需要在原有options中补充控制响应式的属性,同时可以针对移动端30天日期标签拥挤的问题添加x轴展示优化规则:
this.state = {
  loadFirst: true,
  loadData: false,
  filterYear: moment().format('YYYY'),
  filterMonth: moment().format('MM'),
  filtered: {
    year: moment().format('YYYY'),
    month: moment().format('MM')
  },
  data: {},
  options: {
    // 新增响应式配置
    responsive: true,
    // 关闭固定宽高比,可跟随外层容器自适应,移动端适配更灵活
    maintainAspectRatio: false,
    scales: {
      yAxes: [
        {
          stacked: true,
          ticks: {
            beginAtZero: true
          }
        }
      ],
      xAxes: [
        {
          stacked: true,
          // 新增x轴标签适配,避免30天日期标签重叠
          ticks: {
            autoSkip: true,
            maxRotation: 45,
            minRotation: 45
          }
        }
      ]
    }
  }
}
  • 第二步:给图表组件添加自适应外层容器
    你需要在外层包裹一个指定宽高范围的容器,控制图表渲染边界,避免移动端溢出:
<div style={{width: '100%', height: '400px'}}>
  <Bar data={data} options={options} />
</div>

如果需要不同屏幕尺寸适配不同高度,可结合CSS媒体查询给外层容器设置动态height值即可。

  • 高版本适配说明
    如果你使用的是v4以上版本的react-chartjs-2(对应Chart.js v3+),scales的配置语法需要调整为对象写法,原数组写法不再生效:
scales: {
  y: {
    stacked: true,
    ticks: {
      beginAtZero: true
    }
  },
  x: {
    stacked: true,
    ticks: {
      autoSkip: true,
      maxRotation: 45,
      minRotation: 45
    }
  }
}

内容的提问来源于stack exchange,提问作者Fraza Aditya Wiguna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:57:01