微信小程序taro-react-echarts使用dataZoom问题

taro微信小程序中使用 taro-react-echarts 展示图表数据,因为数据量大,需要使用dataZoom来左右滑动图表。

实现效果

注意

echarts.js文件需要选择 5.1.2 版本, 5.3.x和 5.4.x版本都不行(目前不知道为啥不行) 在线构建

解决

首先在echarts的options中添加

xAxis:...
yAxis:...
dataZoom: [
  {
    type: 'inside',
    start: 0,
    end: data.time?.length > 20 ? (20 / data.time?.length) * 100 : 100,
    filterMode: 'none'
  },
],
series:...

发现在开发者工具和真机上,均不能滚动,没反应!!!
之后查看 taro-react-echarts 包的代码,修改如下
修改文件 taro-react-echarts/dist/index.esm.js

function touchStart({ chart, event }) {
    if (chart && event.touches.length > 0) {
        const touch = event.touches[0];
        const handler = chart.getZr().handler;
        handler.dispatch('mousedown', {
            zrX: touch.x,
            zrY: touch.y,
            preventDefault: () => { },
            stopImmediatePropagation: () => { },
            stopPropagation: () => { },
        });
        handler.dispatch('mousemove', {
            zrX: touch.x,
            zrY: touch.y,
            preventDefault: () => { },
            stopImmediatePropagation: () => { },
            stopPropagation: () => { },
        });
        handler.processGesture(wrapTouch(event), 'start');
    }
}
function touchMove({ chart, event }) {
    if (chart && event.touches.length > 0) {
        const touch = event.touches[0];
        const handler = chart.getZr().handler;
        // handler.dispatch('mousedown', {
        //     zrX: touch.x,
        //     zrY: touch.y,
        //     preventDefault: () => { },
        //     stopImmediatePropagation: () => { },
        //     stopPropagation: () => { },
        // });
        handler.dispatch('mousemove', {
            zrX: touch.x,
            zrY: touch.y,
            preventDefault: () => { },
            stopImmediatePropagation: () => { },
            stopPropagation: () => { },
        });
        handler.processGesture(wrapTouch(event), 'start');
    }
}

代码行数见截图

之后就可以开心的左右滑动啦~~

注意
touchStart方法中的 mousemove 无需注掉(注掉会导致饼图点击时无法凸出显示)

修改node_modules中的文件后,其他小伙伴直接yarn来安装依赖是不行的哟,可参考以下文章来保留对依赖项的修改。
使用 patch-package 修改第三方模块

posted @ 2023-07-07 15:49  ZerlinM  阅读(568)  评论(1编辑  收藏  举报