fix(runtime-dom): also set attribute for form element state

close #6007
close #6012
This commit is contained in:
Evan You 2024-05-31 23:22:42 +08:00
parent a52a02f43f
commit 537a571f8c
No known key found for this signature in database
GPG Key ID: B9D421896CA450FB
2 changed files with 6 additions and 1 deletions

View File

@ -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 {

View File

@ -52,6 +52,11 @@ export const patchProp: DOMRendererOptions['patchProp'] = (
parentSuspense,
unmountChildren,
)
// #6007 also set form state as attributes so they work with
// <input type="reset"> 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 <input v-model type="checkbox"> with
// :true-value & :false-value