From: Evan You Date: Fri, 31 May 2024 15:22:42 +0000 (+0800) Subject: fix(runtime-dom): also set attribute for form element state X-Git-Tag: v3.4.28~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=537a571f8cf09dfe0a020e9e8891ecdd351fc3e4;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-dom): also set attribute for form element state close #6007 close #6012 --- diff --git a/packages/runtime-dom/src/modules/attrs.ts b/packages/runtime-dom/src/modules/attrs.ts index ff3ce36bf5..8d8c10c31b 100644 --- a/packages/runtime-dom/src/modules/attrs.ts +++ b/packages/runtime-dom/src/modules/attrs.ts @@ -18,6 +18,7 @@ export function patchAttr( value: any, isSVG: boolean, instance?: ComponentInternalInstance | null, + isBoolean = isSpecialBooleanAttr(key), ) { if (isSVG && key.startsWith('xlink:')) { if (value == null) { @@ -32,7 +33,6 @@ export function patchAttr( // note we are only checking boolean attributes that don't have a // corresponding dom prop of the same name here. - const isBoolean = isSpecialBooleanAttr(key) if (value == null || (isBoolean && !includeBooleanAttr(value))) { el.removeAttribute(key) } else { diff --git a/packages/runtime-dom/src/patchProp.ts b/packages/runtime-dom/src/patchProp.ts index ef0197ed23..0da0ff1f27 100644 --- a/packages/runtime-dom/src/patchProp.ts +++ b/packages/runtime-dom/src/patchProp.ts @@ -52,6 +52,11 @@ export const patchProp: DOMRendererOptions['patchProp'] = ( parentSuspense, unmountChildren, ) + // #6007 also set form state as attributes so they work with + // or libs / extensions that expect attributes + if (key === 'value' || key === 'checked' || key === 'selected') { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== 'value') + } } else { // special case for with // :true-value & :false-value