fix(runtime-dom): add name to vShow for prop mismatch check (#13806)

close #13805
re-fix #13744
revert #13777

The implementation in #13777 requires users to configure __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__, otherwise errors like #13805 will occur.
This commit is contained in:
edison 2025-08-25 14:52:50 +08:00 committed by GitHub
parent 0f916d8c39
commit 1031e8de08
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 3 additions and 5 deletions

View File

@ -9,7 +9,9 @@ export interface VShowElement extends HTMLElement {
[vShowHidden]: boolean
}
export const vShow: ObjectDirective<VShowElement> & { name?: 'show' } = {
export const vShow: ObjectDirective<VShowElement> & { name: 'show' } = {
// used for prop mismatch check during hydration
name: 'show',
beforeMount(el, { value }, { transition }) {
el[vShowOriginalDisplay] =
el.style.display === 'none' ? '' : el.style.display
@ -45,10 +47,6 @@ export const vShow: ObjectDirective<VShowElement> & { name?: 'show' } = {
},
}
if (__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) {
vShow.name = 'show'
}
function setDisplay(el: VShowElement, value: unknown): void {
el.style.display = value ? el[vShowOriginalDisplay] : 'none'
el[vShowHidden] = !value