React Highcharts Candlestick蜡烛图组件无法渲染仅显示空div如何解决
问题排查及修复方案
- 先补全必填的模块导入,使用stockChart和蜡烛图必须额外导入HighStock模块,在组件文件顶部添加如下代码:
import Highcharts from 'highcharts'; import HighchartsReact from 'highcharts-react-official'; import HighchartsStock from 'highcharts/modules/stock'; // 注册Stock模块 HighchartsStock(Highcharts);
- 修复外层容器的宽高配置,Highcharts需要父容器有明确的宽高才能渲染,修改return部分的代码:
return ( <div style={{ width: '100%', height: '500px' }}> <HighchartsReact highcharts={Highcharts} constructorType={"stockChart"} options={options} // 开启数据更新自动重渲染 oneToOne={true} /> </div> );
- 删除错误的配置项:
- 删掉xAxis下的
scrollablePlotArea配置,你设置的maxWidth:1代表最大宽度1像素,直接导致图表不可见 - 删掉xAxis下的
range:10000配置,该值单位为毫秒,10秒的范围远小于正常K线的时间跨度,会导致数据无法展示 - 删掉series下的
step: "center"配置,蜡烛图类型不支持step参数,属于无效配置
- 删掉xAxis下的
- 校验数据格式:
确认price.closeTime是毫秒级的13位时间戳,如果是秒级的10位时间戳,需要乘以1000再传入,否则时间轴无法识别数据,修改series.data的映射逻辑:data: prices.map((price) => [ // 秒级时间戳需要转毫秒 typeof price.closeTime === 'number' && String(price.closeTime).length === 10 ? price.closeTime * 1000 : price.closeTime, price.open, price.high, price.low, price.close, ]), - 可选优化:如果初始
coinPrices是空数组,可以加加载判断,等数据返回后再渲染图表,避免首次渲染空图表后不更新的问题:
return ( <div style={{ width: '100%', height: '500px' }}> {prices.length > 0 ? ( <HighchartsReact highcharts={Highcharts} constructorType={"stockChart"} options={options} oneToOne={true} /> ) : <div>加载中...</div>} </div> );
内容的提问来源于stack exchange,提问作者Shubhankar Agrawal
相关产品推荐
相关产品推荐

