Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在使用了react-hooks加上echarts-taro3-react之后报错addEventListener is not a function #9914

Closed
crastyle opened this issue Jul 28, 2021 · 16 comments
Labels
F-react Framework - React T-weapp Target - 编译到微信小程序 V-3 Version - 3.x

Comments

@crastyle
Copy link

相关平台

微信小程序

小程序基础库: 2.17.0
使用框架: React

复现步骤

使用的是react-hook。
按照代码步骤引入的echarts-taro3-react。
demo中使用的是ref,我把他换成了useRef
`
import { Component, useRef, useLayoutEffect } from 'react'
import { View, Button, Text } from '@tarojs/components'
import { observer, inject } from 'mobx-react'
import { EChart } from "echarts-taro3-react";

import './index.scss'

const App = () => {
const option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line'
}]
};

let barChart: any = null
useLayoutEffect(() => {
console.log(barChart)
barChart.refresh(option)
})
const refBarChart = (node) => (barChart = node);
return (

123


)
}

export default inject('store')(observer(App))
`

期望结果

正常使用,并渲染出结果

实际结果

TypeError: r.addEventListener is not a function

环境信息

👽 Taro v3.3.1


  Taro CLI 3.3.1 environment info:
    System:
      OS: macOS 11.4
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 16.4.2 - /usr/local/bin/node
      Yarn: 1.22.10 - ~/.npm-global/bin/yarn
      npm: 7.19.1 - ~/.npm-global/bin/npm
    npmPackages:
      @tarojs/components: 3.3.1 => 3.3.1 
      @tarojs/mini-runner: 3.3.1 => 3.3.1 
      @tarojs/react: 3.3.1 => 3.3.1 
      @tarojs/runtime: 3.3.1 => 3.3.1 
      @tarojs/taro: 3.3.1 => 3.3.1 
      @tarojs/webpack-runner: 3.3.1 => 3.3.1 
      babel-preset-taro: 3.3.1 => 3.3.1 
      eslint-config-taro: 3.3.1 => 3.3.1 
      react: ^17.0.0 => 17.0.2 
    npmGlobalPackages:
      typescript: 4.3.5
@taro-bot2 taro-bot2 bot added F-react Framework - React T-weapp Target - 编译到微信小程序 V-3 Version - 3.x labels Jul 28, 2021
@crastyle
Copy link
Author

已解决,和taro无关。
在echarts源码里,搜索function(t),第三个,在后面加上两个参数变为,function(t, window, document)

@hellozsh
Copy link

@crastyle 关于这个问题,方便贴一下完整代码么?

@crastyle
Copy link
Author

@crastyle 关于这个问题,方便贴一下完整代码么?

您好,我目前没有代码了,不过如果遇到和我一样的情况,你可以按照我上面说的那样去解决的

在echarts源码里,搜索function(t),第三个,在后面加上两个参数变为,function(t, window, document)

@hellozsh
Copy link

@crastyle 关于这个问题,方便贴一下完整代码么?

您好,我目前没有代码了,不过如果遇到和我一样的情况,你可以按照我上面说的那样去解决的

在echarts源码里,搜索function(t),第三个,在后面加上两个参数变为,function(t, window, document)

可以了,我调试除了这么加,我还注释掉 el.addEventListener(name, handler, opt); 和 el.attachEvent('on' + name, handler); 还有
// e.preventDefault();
// e.stopPropagation();
// e.cancelBubble = true;
就可以了

@Yonghero
Copy link

我修改了 还是这个报错

@hellozsh
Copy link

你看看报错信息,有说哪个文件下的哪个方法,你去找到来,确定注释对了
我这taro3.3.1和3.3.2都可以,
下载echarts-taro3-react,把这个包放到自己的src/components下,echart.js要替换成最新的,去官网下载最新的
之后再根据报错提示注释这几个方法,使用的话直接用src/components/echarts-taro3-react,不用库上的

@lefo0755
Copy link

lefo0755 commented Sep 5, 2021

echarts.apache.org下载最新echarts.min.js,检索“e(t.echarts={})”字符串找到相邻的(this,function(t) 串 ,将其改为(this,function(t,window,document)保存即可

@rayallen001
Copy link

echarts.apache.org下载最新echarts.min.js,检索“e(t.echarts={})”字符串找到相邻的(this,function(t) 串 ,将其改为(this,function(t,window,document)保存即可

按这种方式,解决了我升级到 Taro 3.3.9 之后,echarts 图表不展示的问题

@zhoulujun
Copy link

无论你是使用 echarts-taro3-react 还是使用 techarts,结果都是一样的。控制台报错:el.addEventListener is not a function
taro 版本,回退到 taro 3.0.7 ,不会报错的。
使用最新版本,就只有 按照楼上的办法
#9914 (comment)
echarts.apache.org下载最新echarts.min.js,检索“e(t.echarts={})”字符串找到相邻的(this,function(t) 串 ,将其改为(this,function(t,window,document)保存即可

按这种方式,解决了我升级到 Taro 3.3.9 之后,echarts 图表不展示的问题

@WaWaPeppa
Copy link

WaWaPeppa commented Dec 30, 2021

你看看报错信息,有说哪个文件下的哪个方法,你去找到来,确定注释对了 我这taro3.3.1和3.3.2都可以, 下载echarts-taro3-react,把这个包放到自己的src/components下,echart.js要替换成最新的,去官网下载最新的 之后再根据报错提示注释这几个方法,使用的话直接用src/components/echarts-taro3-react,不用库上的

您好,方便贴一下代码吗 我还是没解决这个问题,修改后无报错 但是页面也没有画图

@crastyle
Copy link
Author

crastyle commented Dec 30, 2021 via email

1 similar comment
@crastyle
Copy link
Author

crastyle commented Jan 15, 2022 via email

@ystyle
Copy link

ystyle commented Feb 24, 2022

echarts.apache.org下载最新echarts.min.js,检索“e(t.echarts={})”字符串找到相邻的(this,function(t) 串 ,将其改为(this,function(t,window,document)保存即可

taro 3.4.1 可以

方法:

/node_modules/echarts-taro3-react/lib/ec-canvas/echarts.js
检索e(t.echarts={})字符串找到相邻的(this,function(t) 串 ,将其改为(this,function(t,window,document)保存即可

@crastyle
Copy link
Author

crastyle commented Feb 24, 2022 via email

@helloint
Copy link

helloint commented Aug 2, 2022

有谁知道这个报错到底是为什么?谢谢🙏

@crastyle
Copy link
Author

crastyle commented Aug 2, 2022 via email

saltovo added a commit to saltovo/echarts-taro3-react that referenced this issue Jan 5, 2023
issue#9914 NervJS/taro#9914 解决taro3.3.x报错addEventListener is not a function的问题
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F-react Framework - React T-weapp Target - 编译到微信小程序 V-3 Version - 3.x
Projects
None yet
Development

No branches or pull requests

9 participants