微信小程序使用echarts动态加载数据

这篇具有很好参考价值的文章主要介绍了微信小程序使用echarts动态加载数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引入加载使用

1.下载官方库到本地

官网地址 GitHub - ecomfe/echarts-for-weixin: Apache ECharts 的微信小程序版本 

将官网代码下载到本地,并进行解压,可以运行一下查看示例代码微信使用动态charts,微信小程序,微信小程序,echarts,小程序

将图示中的文件夹复制粘贴到小程序相应位置,建议放在components文件夹中 微信使用动态charts,微信小程序,微信小程序,echarts,小程序

 2.引入echarts组件

json文件,路径要与文件的位置保持一致

{
  "usingComponents": {
    "ec-canvas":"../../components/ec-canvas/ec-canvas"
  }
}

 wxml文件,给ec-canvas一个父容器,并给组件两个对应的id

<view class="evabar">
	<ec-canvas id="evabar" canvas-id="evabar" ec="{{evabarEc}}"></ec-canvas>
</view>

wxss文件,给父容器一个固定宽高,并给ec-canvas宽高都设置百分百

    .evabar {
        width: 100%;
        height: 220px;
    }

    ec-canvas {
        width: 100%;
        height: 100%;
    }

js文件,引入相应位置的 echarts.js 文件,data中添加渲染需要的对应数据,获取完动态数据后加载innitFn方法

import * as echarts from "../../components/ec-canvas/echarts"


Page({
  data: {
    evabarEc: { 
        disableTouch: true, 
        lazyLoad: true, // 延迟加载
        // 不需要延迟加载时,只使用下面onInit进行渲染即可
        // onInit: (canvas: any, width: any, height: any, dpr: any) => {
        //   const chart = echarts.init(canvas, null, {
        //     width: width,
        //     height: height,
        //     devicePixelRatio: dpr // new
        //   })        
        //   var option = {
        //     ...
        //   };
        //   chart.setOption(option);
        //   return chart
        // }
    },
  },
  onReady() {
    // 获取组件
    this.ecComponent = this.selectComponent('#evabar');
  },
   /** 获取数据后渲染图表 */
  initFn() {
      // 获取数据后
      this.ecComponent.init((canvas: any, width: any, height: any, dpr: any) => {
        const chart = echarts.init(canvas, null, {
          width: width,
          height: height,
          devicePixelRatio: dpr // new
        });
        var option = {
            ...
        };
        chart.setOption(option);
        return chart
      })
  }
})

3.以上方法可以基本实现动态数据渲染

因为 echarts 是通过 canvas 绘图实现 ,canvas作为微信小程序的原生组件,层级较高且无法通过 zIndex 进行更改,所以会出现页面滚动,而图表在屏幕固定位置占位影响页面效果的情况,下面对代码进行更改,解决该问题

 二、实现页面滚动时,图表随之滚动

1.方法一(win、android)

 在组件中添加 force-use-old-canvas="true" 属性,这个方法可以解决 charts 在win和Android的不滚动问题,但是 ios系统 中的问题得不到解决,该方法属于强制使用旧canvas,2.9.0版本以上就不推荐使用该方法

<ec-canvas id="evabar" canvas-id="evabar" ec="{{evabarEc}}" force-use-old-canvas="true"></ec-canvas>

2.方法二(win、android、ios)

将 cahrt 转换成图片,data中添加变量用来存储图片地址 ,并在 initFn 中添加以下代码

data:{
    ...,
    evabarEc: { disableTouch: true, lazyLoad: true },
    evabarImg:''
}

...
        // initFn中
        var option = {...};
        
        // =================================== 添加以下代码
        chart.on('finished', () => {
          this.evabarEcComponent.canvasToTempFilePath({
            success: (res: any) => {
              this.setData({
                evabarImg: res.tempFilePath
              })
            },
            fail: (res: any) => console.log('转换图片失败', res)
          });
        })
        // ======================================= 结束
        chart.setOption(option);
        return chart

 wxml文件,这里如果使用 wx:if 对图表进行显示隐藏,在下一次图表更新时会报错(找不到对应的node节点),使用 hidden 减少了页面的重新渲染,且不会出现节点销毁问题

				<view class="evabar" hidden="{{evabarImg!=''}}">
					<ec-canvas id="evabar" canvas-id="evabar" ec="{{evabarEc}}"></ec-canvas>
				</view>
				<view class="evabar" hidden="{{evabarImg==''}}">
					<image src="{{evabarImg}}" class="image" mode=""/>
				</view>

 三、引入对应的图表,减少引入量,提高性能

  Apache ECharts echarts官网地址

在 echarts 的 github 中点开 ec-canvas 文件夹,查看当前下载的版本

微信使用动态charts,微信小程序,微信小程序,echarts,小程序

到官网中找到下载,在线定制

微信使用动态charts,微信小程序,微信小程序,echarts,小程序

微信使用动态charts,微信小程序,微信小程序,echarts,小程序 

选择与代码同版本的,然后在下面勾选需要的图表,页面最后进行下载,会得到一个  echarts.min.js 文件

把项目的 ec-canvas 文件夹中的 echarts.js 删除,将 echarts.min.js 复制到文件夹中

将文件夹中的 ec-canvas.js其它页面 引入的 echarts.js 更改成 echarts.min.js 文章来源地址https://www.toymoban.com/news/detail-848919.html

到了这里,关于微信小程序使用echarts动态加载数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)

    微信小程序中使用 echarts 需使用官方提供的 ec-canvas 组件 点击下方链接,下载 ec-canvas 组件 https://gitcode.net/mirrors/ecomfe/echarts-for-weixin/-/tree/master 将其中的 ec-canvas 文件夹拷贝到微信小程序的分包中 ( 因 ec-canvas 组件较大,约 1M,若放在主包中很容易超出 2M 的大小限制,不了解

    2024年02月09日
    浏览(55)
  • 原生微信小程序使用u-charts(组件版)折线图示例

            之前一直使用的都是 wx-charts,链接: xiaolin3303/wx-charts: 微信小程序图表charts组件 ,但是这个库已经五六年没有维护了,经常出现 canvas层级过高弹窗无法覆盖等问题(微信小程序前面新推出了 canvas-2d,解决了这个问题)         摸索了官网文档一个下午,今天来介

    2024年02月09日
    浏览(61)
  • uniapp APP、H5和微信小程序 使用百度地图,H5动态加载百度地图sdk,cover-image图片不显示,标准基座模拟器地图不显示,表单校验字段[‘**‘]在数据库中不存在

    APP里面的几个注意项 在百度地图开放平台申请密匙,在manifest.json App模块配置的地图模块选择百度地图并填入申请到的appkey。 页面使用uniapp的map标签,要在地图上面覆盖图片、内容等,使用cover-image、cover-view,因为map是原生组件,覆盖的内容有时不显示,使用v-if控制(这里

    2024年02月11日
    浏览(67)
  • 微信小程序使用echarts

    前期准备 : 1.echarts提供了一个微信小程序原生组件,下载地址:ecomfe/echarts-for-weixin ,拿到 ec-canvas 文件夹 2. 到 echarts官网 在线定制组件包 注意:版本一定要和 ec-canvas 相同 3.将下载的 echarts.min.js 替换掉原本的 echarts.js ,小程序文件过大影响发布 4.引入 ec-canvas.json ec-canvas

    2023年04月23日
    浏览(57)
  • 微信小程序中使用echarts方法

    echarts是一个基于JS的数据可视化图标库,它提供了直观,生动,可交互,可个性定制的数据可视化图表。一般在vue中会使用到,并且官网也详细的说明了如何在vue中使用,但是今天我想来探讨的是,如何在 微信小程序中使用echarts : 1. ec-canvas的github仓库 官网中介绍到:echa

    2024年02月15日
    浏览(55)
  • 微信小程序使用ECharts----折线图

    微信小程序的开发者在很多情况下需要使用图形化数据展示,现有的 ECharts 这样的可视化工具由于一些原因并不能在微信小程序中使用。 因此,ECharts 团队和微信小程序官方团队合作,提供了 ECharts 的微信小程序版本。开发者可以通过熟悉的 ECharts 配置方式,快速开发图表,

    2024年04月15日
    浏览(68)
  • uniapp 微信小程序使用echarts

    本文目的:通过分包的方式,尽可能在微信小程序中使用最新的echarts。 当然你也可以直接使用现成的uchart或者市场里别人封好的echarts. 准备工作 下载echarts-for-weixin源码。 复制 ec-canvas 文件夹以及下属文件,在uniapp项目中与pages同级的地方创建 wxcomponents 文件夹,将复制的文件

    2024年02月04日
    浏览(56)
  • UNIAPP微信小程序使用Echarts

    ​ 最近要在uniapp做的小程序中使用echarts,网上搜了很多教程都很麻烦,这里提供一种简便快捷CV方案。 ​ 先说下图表选型的问题,如果你只用于微信小程序,可以使用本方案,Echarts丰富多样的图表和广大的开源图库都已使用。如果要考虑兼容性问题,比如兼容支付宝小程序

    2024年02月09日
    浏览(50)
  • 微信小程序中简单使用echarts图表

       1.复制组件至page同级目录下(ec-canvas) 2. 在js中引入 3.在wxml写个标签 样式我是这么设置的(在wcss),差不多大写微信里尺寸可以 4.编写数据咯(数据肯定是从接口传的,我就不写死了 直接方法也贴出来) 先创建对象 初始化图表 定义option 定义方法掉接口数据定义optio

    2024年02月09日
    浏览(55)
  • uniapp微信小程序中使用echarts

    可以先随便建个文件夹,然后 npm init。运行下面的命令行,下载依赖 找到node_modulesmpvue-echarts下的文件,保留src文件夹,其他删除,复制mpvue-echarts文件夹到项目的components中 1.2、获取定制echarts的js文件 在https://echarts.apache.org/zh/builder.html定制echarts的js文件,然后下载,放到c

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包