Closed winixt closed 1 year ago
19 行的时候 isVNodeHTMLElement
已经判断过 __vueParentComponent
属性了,这个属性不存在时 __vnode
必定也不会存在。
但是 getClosestNodeInstance
方法在查询的时候,如果没找到会往父级继续查找,最终会找到根元素节点,也就是 mount 方法挂载的那个元素,这个元素是没有 __vnode
的,而是 __vue__app__
,所以要排掉这种可能。如果 __vue_app__
和 __vnode
都没有找到,那就说明用户用的是生产环境版本的 vue 运行时
我感觉在这里判断不合理,比如用了 v-html 指令,插入一个 p 标签,鼠标放上去:
getClosestNodeInstance
isVNodeHTMLElement
为 false
if
为 true
getClosestNodeInstanceByElement
向上能找到真实的 vue 组件这里的警告是不是可以放在初始化的时候直接判断就好了?例如判断 window.devtoolsFormatters 是否有值
我感觉在这里判断不合理,比如用了 v-html 指令,插入一个 p 标签,鼠标放上去:
- 进入
getClosestNodeInstance
isVNodeHTMLElement
为false
- 因为是一个常规的节点,
if
为true
- 打印警告
- 但是
getClosestNodeInstanceByElement
向上能找到真实的 vue 组件这里的警告是不是可以放在初始化的时候直接判断就好了?例如判断 window.devtoolsFormatters 是否有值
这个警告判断放在这里确实不太好,因为这个方法会频繁触发,但是这个警告应该只需要打印一次就好了。使用 window.devtoolsFormatters
属性来判断是个非常棒的建议。
判断条件是
__vue_app__
为什么提示的是__vnode
? 应该是__vnode
?