背景:
在子组件弹框中使用echarts图,通过props从父组件传递数据id等数据,从后端查询数据并渲染echarts
问题:
首次打开弹窗没有问题,第二次及后续打开弹窗,echarts会警告:cannnot get dom…拿不到dom节点,导致echarts大小为默认的100px大小,手动改变浏览器窗口大小触发了resive方法后即正常
解决方法:
1.通过echarts实例手动在合适时机调用resive方法,比如setstate后,或者onchartReady时,重新再resize一次
2.即使modal设置了destroyonclose,但是react组件的浅比较机制导致其认为组件不需要更新,所以状态还在。下一次打开弹窗后,echarts渲染逻辑执行更早,导致问题发生,可以给子组件加上key属性,值为数据id等方法,使得子组件重新渲染。