fix(runtime-core): unset removed props first in full diff mode

fix #6571
This commit is contained in:
Evan You 2022-09-27 10:24:13 +08:00
parent c71a08e6fd
commit c0d8db81a6
1 changed files with 17 additions and 17 deletions

View File

@ -1005,6 +1005,23 @@ function baseCreateRenderer(
isSVG: boolean
) => {
if (oldProps !== newProps) {
if (oldProps !== EMPTY_OBJ) {
for (const key in oldProps) {
if (!isReservedProp(key) && !(key in newProps)) {
hostPatchProp(
el,
key,
oldProps[key],
null,
isSVG,
vnode.children as VNode[],
parentComponent,
parentSuspense,
unmountChildren
)
}
}
}
for (const key in newProps) {
// empty string is not valid prop
if (isReservedProp(key)) continue
@ -1025,23 +1042,6 @@ function baseCreateRenderer(
)
}
}
if (oldProps !== EMPTY_OBJ) {
for (const key in oldProps) {
if (!isReservedProp(key) && !(key in newProps)) {
hostPatchProp(
el,
key,
oldProps[key],
null,
isSVG,
vnode.children as VNode[],
parentComponent,
parentSuspense,
unmountChildren
)
}
}
}
if ('value' in newProps) {
hostPatchProp(el, 'value', oldProps.value, newProps.value)
}