apache / echarts

Apache ECharts is a powerful, interactive charting and data visualization library for browser
https://echarts.apache.org
Apache License 2.0
60.63k stars 19.61k forks source link

ECharts在升级到4.0+版本之后的报错问题,无法对一个series为空的option进行重复setOption(option,true) #7896

Closed tun100 closed 4 years ago

tun100 commented 6 years ago

One-line summary [问题简述]

该问题是在4.0.0版本之后才有的,之前3.x的版本没有这个问题。详情的代码可以查看我的Github仓库链接: https://github.com/LaiHuanMin/Issue-echarts-4.x-bug
因为我目前在使用React进行开发项目,在React的生命周期有一个ComponentWillReceiveProps用来更新传递props的option。我现在在每一次更新图表之前都需要清空图表的数据,所以我将默认的option(series为空,xAxis.data都为空)在重新赋值给ECharts所对应的那个组件。
但是问题来了,第一次渲染,图表setOption默认的option是没有问题的,但是第二次重复去渲染这个一模一样的option,就会有Cannot read property 'slice' of undefined。 我在调用setOption的时候,都是setOption(option,true),也就是不合并,当设置为false的时候就不会出错(但是我的需求需要每次更新都是不合并的)。
经过一番测试之后,发现这个问题只有在dataZoom存在时才有,没有dataZoom的时候就一切正常,实在不太了解,3.x却又可以,不太明白缘由,请问应该怎么处理才正确呢?

Version & Environment [版本及环境]

Expected behaviour [期望结果]

不产生Cannot read property 'slice' of undefined的异常

ECharts option [ECharts配置项]

option = {

}

Other comments [其他信息]

tun100 commented 6 years ago

我觉得出问题的地方可能在如下三个:

  1. setOption(option,isNotMerge=true)
  2. dataZoom的重新渲染问题
  3. series里面为空,并且重复的用为空的series来进行渲染,导致错误

我目前的解决方案为: 给series里面添加一个

{
 // ...
 series: [
    {
      type: "line",
      data: []
   }
  ]
}

这样就解决了,但是还是有点hack,希望官方给予修改!

tun100 commented 6 years ago

请问有人吗?

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.