React魔法堂:echarts-for-react源码略读( 二 )

  • 触发props onChartsReady 方法;
  • 订阅通过size-sensor监测容器尺寸并自动调用ECharts实例的resize方法,实现图表尺寸的自适应 。
  • 更新渲染过程由于render方法无论执行多少遍,实际上仅仅有可能影响容器本身而已,对ECharts实例并没有任何影响 。因此实际影响ECharts实例的逻辑被放置到componentDidUpdate那里,这做法和react-amap中在useEffect中通过Marker等实例内置的set方法更新状态的原理是一致的 。
    1. 若更新的props包含theme, optsonEvents则要销毁原来的ECharts实例,重新构建一个新的ECharts实例,并终止更新渲染过程;否则执行第2步 。
    2. 若props中的option,notMergela,lazyUpdate,showLoadingloadingOption均没有变化,则不更新ECharts实例;注意:EChartsReactCore继承PureComponent,若上述props进行shallow equal比较为true时也不会更新ECharts实例;但这一步采用deep equal比较,来减少ECharts实例的更新 。
    3. 若props中的styleclassName发生变化则会触发ECharts实例的resize方法 。
    卸载过程
    1. 取消通过size-sensor订阅的容器尺寸变化事件;
    2. 通过ECharts实例的dispose方法注销ECharts实例 。
    项目依赖
    • fast-deep-equal: 遍历对象属性进行对比
    • size-sensor: DOM元素尺寸监听器,当元素尺寸变化时会触发回调函数
    后续echarts-for-react利用size-sensor实现图表尺寸自适应容器尺寸,那么size-sensor是怎样做到这一点呢?敬请期待一下篇《React魔法堂:size-sensor源码略读》 。
    尊重原创,转载请注明来自:https://www.cnblogs.com/fsjohnhuang/p/16792575.html _肥仔John
    【React魔法堂:echarts-for-react源码略读】

    经验总结扩展阅读