Vue2.6.14 源码 core/vdom/patch.js 文件里
patchVnode 方法中,五种新旧节点比较的情况,其中一种旧节点有 text ,无新节点的情况,我无法模拟出具体的应用场景,请教下各位。
// 省去了部分代码
function patchVnode(oldVnode, vnode) {
if (isUndef(vnode.text)) {
if (isDef(oldVnode.text)) {
nodeOps.setTextContent(elm, '')
}
}
}
比如这个例子,
<div id="app">{{name}}</div>
name 从有值到为空的情况,这匹配到的是
if (oldVnode.text !== vnode.text) {
nodeOps.setTextContent(elm, vnode.text)
}
isUndef(vnode.text)
的主要目的不是判断文本内容是不是空,而是为了判断是不是文本节点,包括后面判断不是文本节点的话有没有子元素