uni-app 微信小程序分栏显示情况下uchart不渲染 #插件讨论# 秋云 ucharts echarts 高性能跨全端图表组件

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 微信小程序分栏显示情况下uchart不渲染 #插件讨论# 秋云 ucharts echarts 高性能跨全端图表组件
微信小程序在pc端打开默认开启分栏模式,此时会导致chart渲染空白。如A为原页面,B为新页面,同时显示AB时,在A页面重新渲染chart数据会出现空白情况

4 回复

我也发现这个问题了,同问是否有相关的解决方案呀


能加你一个微信吗,你发布的无障碍插件使用上想问一些问题

能加你一个微信吗,你发布的无障碍插件使用上想问一些问题

在使用 uni-app 开发微信小程序时,如果遇到 uCharts 在分栏显示情况下不渲染的问题,这通常与组件的初始化时机、视图容器的尺寸变化等因素有关。为了确保 uCharts 能够正确渲染,我们需要确保图表的容器已经正确布局,并且在视图更新后重新初始化图表。

以下是一个简化的代码示例,展示如何在 uni-app 中使用 uCharts,并处理视图变化时图表的重新渲染。

首先,确保你已经安装了 uCharts 组件,并在页面中正确引入。

1. 安装 uCharts

在项目的 manifest.json 中添加 uCharts 插件依赖(如果尚未添加)。

"mp-weixin": {
  "usingComponents": true,
  "plugins": {
    "uCharts": {
      "version": "最新版本号",
      "provider": "wxa9a38f1f906e41fb"
    }
  }
}

2. 页面结构

假设我们有一个页面 index.vue,其中包含 uCharts 图表组件。

<template>
  <view class="container">
    <view class="chart-container" :style="{width: chartWidth + 'px', height: chartHeight + 'px'}">
      <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
    </view>
  </view>
</template>

<script>
import * as uCharts from '@/static/ucharts.min'; // 假设 uCharts 已下载并放置在 static 目录下

export default {
  data() {
    return {
      chartWidth: 300, // 初始宽度
      chartHeight: 200, // 初始高度
      ec: {
        onInit: this.initChart
      }
    };
  },
  methods: {
    initChart(canvas, width, height, dpr) {
      const chart = new uCharts({
        canvasId: 'mychart-bar',
        type: 'bar',
        categories: ['A', 'B', 'C', 'D'],
        series: [{
          name: '销量',
          data: [10, 20, 30, 40]
        }],
        width: width,
        height: height,
        dataLabel: true,
        xAxis: {disableGrid: false},
        yAxis: {title: '销量'}
      });
      chart.init();
    },
    onResize() {
      this.chartWidth = this.$refs.chartContainer.offsetWidth;
      this.chartHeight = this.$refs.chartContainer.offsetHeight;
      // 这里可能需要重新初始化图表,具体实现依赖于 uCharts 的 API
      // 例如,如果 uCharts 提供了 update 方法,可以在这里调用
    }
  }
};
</script>

注意事项

  1. 上述代码中的 onResize 方法需要在页面尺寸变化时调用,比如监听窗口的 resize 事件。
  2. uCharts 的初始化需要确保容器已经正确布局,因此在实际项目中,可能需要更精细地控制图表的初始化和更新时机。
  3. 如果 uCharts 提供了响应式布局或更新接口,请查阅官方文档并按需调用。

以上代码仅作为示例,具体实现需根据项目实际情况调整。

回到顶部