## Vue 中使用 Axios 和 ECharts 渲染图表时,数据显示不出的问题该如何解决?
欢迎各位小伙伴来到米云,相聚于此都是缘哈哈哈!今天我给大家带来《## Vue 中使用 Axios 和 ECharts 渲染图表时,数据显示不出的问题该如何解决?》,这篇文章主要讲到等等知识,如果你对文章相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

vue 中使用 axios 异步请求并渲染 echarts 图表的常见问题
在 vue 项目中,结合 axios 和 echarts 库加载动态数据并展示图表时,可能会遇到数据显示不出的问题。
问题分析:
根据您提供的代码,问题可能出在以下两方面:
- 数据请求时机不当:
您在 mounted() 生命周期钩子中调用 drawline() 方法,但由于数据请求是异步的,它可能在图表初始化后才完成。因此,图表无法及时获取有效数据。 - 图表渲染时机不当:
在您的 drawline() 方法中,您在数据请求成功后才执行 mychart.setoption(option),这会导致图表一开始显示为空。
解决方案:
要解决这些问题,您可以按照以下步骤进行优化:
- 将 arrtest() 函数移至 methods 对象中,以便可以在需要时随时调用。
- 在 mounted() 生命周期钩子中调用 arrtest(),启动数据请求。
- 在数据请求成功回调中,调用 drawline() 方法来渲染图表。
- 在 mychart.setoption(option) 之前先赋值给 x_city 和 y_people 数组,确保图表数据是最新的。
以下是对您的代码进行修改的示例:
export default {
data() {
return {
x_city: [],
y_people: [],
};
},
mounted() {
this.arrtest();
},
methods: {
arrtest() {
let that = this;
axios.get('http://localhost:3000/src/statics/test1.php').then((res) => {
for (var i = 0; i < res.data.length; i++) {
that.x_city.push(res.data[i].city);
that.y_people.push(parseInt(res.data[i].y_people));
}
this.drawLine();
});
},
drawLine() {
let myChart = echarts.init(document.getElementById('myChart'));
let option = {
tooltip: {
show: true,
},
legend: {
data: ['people'],
},
xAxis: [
{
type: 'category',
data: that.x_city,
},
],
yAxis: [
{
type: 'value',
},
],
series: [
{
name: 'people',
type: 'bar',
data: that.y_people,
},
],
};
myChart.setOption(option);
},
},
};
通过对这些修改,您的图表应该能够正确地加载动态数据并进行渲染。
理论要掌握,实操不能落!以上关于《## Vue 中使用 Axios 和 ECharts 渲染图表时,数据显示不出的问题该如何解决?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
