hilongjw / vue-lazyload

A Vue.js plugin for lazyload your Image or Component in your application.
http://hilongjw.github.io/vue-lazyload/
MIT License
8k stars 867 forks source link

bug: lazy-component emit event 'show' twice #443

Open zjfresh opened 4 years ago

zjfresh commented 4 years ago

image image

https://codesandbox.io/live/rehrhqj

这个show事件应该只要触发一次吧,但是每个 lazy-componet 在触发 mounted 时查询队列都会执行检查,而执行完load()后,并没有清除该listener

image

目前的清除条件是根据内部设定的el属性或其父节点是否存在: if (!listener.el || !listener.el.parentNode)

还需要增加一个 listener._loaded 来避免在vue组件异步更新前重复执行load()

image image image

zjfresh commented 4 years ago

已提PR,分析代码后,并尝试了几次,增加一个属性做判断比较好,不会干扰到其它逻辑