iview内存泄漏
2022-04-11 本文已影响0人
姜治宇
iview在升级到view-design之前,是存在严重的内存泄漏问题的,而如果你在项目中大量使用了iview组件,就可能面临大量的升级工作要做,因为样式很多是不兼容的。
我们今天就看一下iview的源码,看看到底问题在哪里?为什么会导致内存泄漏?
内存泄漏的产生
首先进入iview官网https://iview.github.io/,安装老版iview2.0。
npm install iview -S
我们看一下常用的table组件吧:
1.png
我们可以看到,在beforeDestory周期中,只释放了挂载的resize事件,并未释放this下注册的自定义事件on-visible-change,这就会导致运行一段时间,this下挂载的自定义事件越来越多,从而导致内存的泄漏。
我们再看看升级后的view-design:
2.png
可以看到,作者已经将这个漏洞堵住了。类似的问题大家可以在其他组件找到,老版iview2.0有大量这类的问题,通过this.$on方法注册的自定义事件都没释放。
beforeDestroy
我们一定要重视beforeDestroy生命周期的作用,将dom的引用、所有注册的事件都要释放掉,防止内存泄漏的产生。