Vue组件点击事件监控导致性能问题怎么办?
在Vue项目里给按钮加了点击监控,发现页面卡顿,代码用了防抖还是没用。这是为什么啊?
我给所有按钮加了统一的点击上报逻辑,代码像这样写的:
export default {
methods: {
trackClick(type) {
const debounced = _.debounce(() => {
window.analytics.track('button_click', { type })
}, 300)
debounced()
}
}
}
测试时发现明明设置了300ms防抖,但每点击一次都会立即触发上报。更奇怪的是,页面有多个按钮时滚动会卡顿,控制台没报错,这是哪里出问题了?
改好的代码像这样:
顺便说下,多个按钮共用一个防抖函数性能会好很多,之前那种写法每点一次就new个新函数,内存占用能不爆才怪。