ECharts 数据异步加载
我们在以前的学习中可能了解过“同步”,“异步”的概念,同步就意味着当我们完成了一件事之后才能开始另一个事情,也就是说当我们使用同步的数据请求方式向后台发送请求,直到我们获取到数据才能让我们的图表进行展示,数据量较大或者网络较慢时可能会导致我们的图表整体加载不出来的情况,用户体验及不好,所以我们应该根据情况使用异步的方式加载数据,而且 ECharts 还为我们配备了优质 Loading 动画~ 让我们一起去看一下吧。
1. 简介
很多时候图表的数据是通过异步加载方式获得的,在 ECharts 中可以使用 jQuery、axios、fetch 等任何熟悉的工具先加载数据,再调用 setOption
渲染图表,例如:
const ecInstance = echarts.init(document.getElementById('main'));
const data = await axios.get('data/source');
ecInstance.setOption({
title: ...,
series: [
{type:'xxx', data:data}
]
});
2. 使用加载动画
上例的问题是从 init 到 setOption 这段时间内,图表容器没有内容,一片空白,可能会让用户误解为 bug,因此需要给容器加上 loading 效果以提示用户正在加载数据。echarts 内置了一套简单的加载动画效果,通过 echartInstance.showLoading 方法触发;通过 echartInstance.hideLoading 方法关闭,例如:
示例效果:
echartInstance.showLoading 函数签名如下:
(type?: string, opts?: Object) => void
参数:
- type:可选,加载动画类型,目前只支持 ‘default’;
-
opts:可选,加载动画配置项,默认配置项:
{ text: 'loading', color: '#c23531', textColor: '#000', maskColor: 'rgba(255, 255, 255, 0.8)', zlevel: 0 }
提示:
echarts 目前只提供了一种加载动画样式,而且没有对外暴露加载动画的扩展接口。如果应用场景要求使用自定义动画,可以自行实现,在图表容器上覆盖一层遮罩层,并在遮罩层上叠加加载动画效果。
3. 图表预配置
对于异步数据场景,也可以在数据完成加载前预先提供图表的基本配置信息,例如:
示例效果:
Tips :
预设配置信息并不能带来性能上的提升,因为每次调用setOption
都会重绘所有组件、图表。预设的作为纯粹只是在数据来临之前提供一个基本线框图,提示用户即将到来什么样的信息内容。
4. 小结
本节主要介绍在 Echarts 中如何优雅地进行数据加载,包括如何使用 showLoading
接口展示加载动画;如何将图表配置拆分为预配置、数据配置两部分以尽快提供交互响应。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。