在vue中的beforedestroy方法里执行异步代码操作dom报错?
beforeDestroy() {
if (this.players.length) {
this.delPlayer()
}
},
methods: {
delPlayer() {
return new Promise((resolve, reject) => {
if (!this.players.length) {
resolve()
return
}
for (const [index, item] of this.players.entries()) {
item.player.stop().then(() => {
document.getElementById(`video${index}`).remove();
if (index + 1 === this.players.length) {
resolve()
}
})
}
})
}
}
如何在beforedestroy方法里执行异步代码操作dom?
回复
1个回答

test
2024-08-11
错误信息:你不能读取null上的属性remove。不就是你getElementById获取到的是null。
针对这个错误,一般是做容错,判断获取到dom了再进行后续的remove操作。
但这里是因为你在beforeDestroy中执行的,他都要Destroy注销了,你还删除他干嘛,vue会把他删掉的,不用你来操作了,你把相关的变量清空,定时器取消就行。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容