React中Syncfusion SparklineComponent组件渲染空白如何解决
问题根因
Sparkline组件不渲染由3个配置错误导致:
- 字段映射错误:配置的
xName="X"、yName="Y"和数据源实际字段xval、yval名称、大小写均不匹配,组件无法读取绘图数据 - 依赖导入缺失:代码中使用的
Inject模块、SparklineTooltip服务未从依赖包中显式导入,组件初始化流程中断 - 容器尺寸问题:设置
height: 100%、width: 100%时,如果父元素没有设置明确可计算的宽高,组件渲染尺寸会被计算为0,视觉上看不到任何内容
修复后代码
// 补全缺失的依赖导入 import { SparklineComponent, Inject, SparklineTooltip } from '@syncfusion/ej2-react-charts'; // 父容器必须设置明确宽高 <div style={{ width: 300, height: 100 }}> <SparklineComponent id="sparkline" height="100%" width="100%" lineWidth={2} valueType="Numeric" dataSource={[ { x: 0, xval: 2005, yval: 20090440 }, { x: 1, xval: '2006', yval: 20264080 }, { x: 2, xval: '2007', yval: 20434180 }, { x: 3, xval: '2008', yval: 21007310 }, { x: 4, xval: '2009', yval: 21262640 }, { x: 5, xval: '2010', yval: 21515750 }, { x: 6, xval: '2011', yval: 21766710 }, { x: 7, xval: '2012', yval: 22015580 }, { x: 8, xval: '2013', yval: 22262500 }, { x: 9, xval: '2014', yval: 22507620 }, ]} // 修正字段映射,和数据源字段名完全匹配(注意大小写) xName="xval" yName="yval" type="Line" fill={themeColor} border={{ color: themeColor, width: 2 }} > <Inject services={[SparklineTooltip]} /> </SparklineComponent> </div>
注意事项
- JS对象属性区分大小写,组件配置的字段名必须和数据源字段名完全一致
- Syncfusion组件的功能服务、注入模块必须显式导入后才能正常使用
- 使用百分比作为组件宽高时,必须保证父容器有明确的宽高属性,否则组件无法获得渲染尺寸
内容的提问来源于stack exchange,提问作者Amr Hussein
相关产品推荐
相关产品推荐

