echarts小程序异步加载

本文详细介绍了在微信小程序中如何实现ECharts图表的异步加载,包括创建option,向后端请求数据,实例化ECharts,以及防止闪屏的处理。通过setData更新数据,init方法初始化图表,并使用clearOption清空旧数据,确保平滑过渡。同时,文章提到了导入echarts库和配置文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    如何实现异步加载?
    第一步:创建option 方法 设置好样式后 返回option,异步的值可以通过传参的方法传入option。

  

第二步:向后段请求数据,当请求完毕后用setData方法保存数据

// 折线图图表
let tableChart = null;//在page外定义一个全局的变量
  getData () {
    this.data.timeList = [];
    this.data.valueList = [];
    wx.request({
      url: 'URL',
      data: '',
      success: (res) => {
        this.setData({
          valueList: res.valueList,
          timeList:res.timeList
        });
        this.tabelFrist();
      }
    });
  },

第三步:调用实例化echarts

tabelFrist () {
    this.chart = this.selectComponent('#mychart-dom-line'); // 去获取echarts  这里的id就是html中echarts的id
    this.chart.init((canvas, width, height, dpr) => {
    // 初始化图表
      tableChart = echarts.init(canvas, null, { // echarts会继承父元素的宽高
        width: width,
        height: height,
        devicePixelRatio: dpr // 像素
      });
      this.clearOption();
      return tableChart; // 一定要return出去
    });
  },

第四步:实例化完成后,为了现实正常,添加了 

tableChart.clear()清除上一次加载的值,会不会闪屏这里很重要 其实如果用户闲着没事做,一直狂点就会出现闪屏现象。这里的clear() 是一个重点。如果想防止用户暴力浏览,建议使用节流或者防抖控制用户点击频率,相关详细教程很快就出。

 clearOption () {
    tableChart.clear();
    tableChart.setOption(getTableOption(this.data.valueList, this.data.timeList));
  },

到这里已经能够实现异步加载数据了,在加一点, 

 不要忘记导入,echarts 。整个echarts导入方法 在这!!!!https://blog.youkuaiyun.com/weixin_45885731/article/details/118604567

import * as echarts from '../../../assets/ec-canvas/echarts';

json文件不要忘记引入这个。

    "ec-canvas": "../../../../financeSection/assets/ec-canvas/ec-canvas"

 

### 关于 ECharts 饼状图异步加载数据 在 Web 应用程序中,为了提高用户体验并减少初始页面加载时间,通常会采用异步方式来加载图表所需的数据。对于 ECharts 的饼状图而言,可以通过 JavaScript 或者 jQuery 来发起 AJAX 请求获取服务器端返回的数据,并利用 `setOption` 函数动态刷新图表显示。 下面是一个完整的 Java Spring Boot 后端配合前端 HTML 页面展示带有异步加载功能的 ECharts 饼状图的例子: #### 服务端 (Java Spring Boot) 首先定义一个 RESTful API 接口用于提供给前端调用以取得饼图所需的统计数据[^1]。 ```java @RestController @RequestMapping("/api/chart") public class ChartController { @GetMapping("/pieData") public ResponseEntity<List<PieChartData>> getPieChartData() { List<PieChartData> pieChartDataList = Arrays.asList( new PieChartData("类别A", 335), new PieChartData("类别B", 310), new PieChartData("类别C", 274) ); return ResponseEntity.ok(pieChartDataList); } } ``` 其中 `PieChartData` 是自定义的一个类用来封装每个扇区的名字及其对应的数值。 #### 客户端 (HTML + JS) 接着是在客户端部分编写 HTML 文件以及嵌入必要的脚本逻辑完成图表渲染工作。这里假设已经引入了 ECharts 和 jQuery 库文件。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ECharts 异步加载饼状图</title> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"></script> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的DOM --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 初始化 echarts 实例 var myChart = echarts.init(document.getElementById('main')); $.ajax({ url : '/api/chart/pieData', method : 'GET', success : function(result){ var option = { title : { text: '某站点用户访问来源' }, tooltip : { trigger: 'item' }, legend: { orient: 'vertical', left: 'left' }, series : [ { name: '访问来源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:result.map(function(item){return {value:item.value, name:item.name}}) } ] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); } }); </script> </body> </html> ``` 上述代码片段展示了如何通过发送 GET 请求至 `/api/chart/pieData` 获取 JSON 格式的响应体作为饼图的数据源,并将其解析成适合传入 `series.data` 属性的形式再传递给 `myChart.setOption()` 方法从而达到更新视图的目的[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值