在vue项目中遇到的问题:DOMException

用vue做项目的时候,抛出异常:
DOMException: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.

clipboard.png

描述:这个问题之前在网上搜索过,从很多参考资料中看出,和v-if和v-show有关系,但是并没有给出过详细合理的解释以及解决方案,在此提出问题,希望遇到过解决的道友给出解释。

阅读 30.8k
3 个回答

经过查找资料:
https://github.com/vuejs/vue-...
https://github.com/vuejs/vue/...
以上链接可参照。

本人推测当页面Dom在还没有渲染完成的情况下,http请求回来的数据被插入到未知节点中,导致出现这种错误。

情景:点击按钮从服务器请求数据,更新vnode,更新渲染结果。
解决: 对需要渲染的模板外层添加<div v-if="isShow"><div v-for=""></div></div>,点击按钮开始请求数据的时候@click="isShow=false", 当成功请求数据时,在回调函数中cb(isShow=ture). 保证 更新数据的时候先移除后插入*

我遇到过这种情况,将v-if去掉就解决了,或者用v-show,加上反而不行。此时DOM节点不存在,操作不了

遇到过类似的报错,最后的解决方法是放入nextTick内

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题