Просмотр исходного кода

fix(runtime-dom): style patching shoud always preserve v-show display property

close #4424
Evan You 4 лет назад
Родитель
Сommit
d534515836
1 измененных файлов с 7 добавлено и 7 удалено
  1. 7 7
      packages/runtime-dom/src/modules/style.ts

+ 7 - 7
packages/runtime-dom/src/modules/style.ts

@@ -5,18 +5,12 @@ type Style = string | Record<string, string | string[]> | null
 
 export function patchStyle(el: Element, prev: Style, next: Style) {
   const style = (el as HTMLElement).style
+  const currentDisplay = style.display
   if (!next) {
     el.removeAttribute('style')
   } else if (isString(next)) {
     if (prev !== next) {
-      const current = style.display
       style.cssText = next
-      // indicates that the `display` of the element is controlled by `v-show`,
-      // so we always keep the current `display` value regardless of the `style` value,
-      // thus handing over control to `v-show`.
-      if ('_vod' in el) {
-        style.display = current
-      }
     }
   } else {
     for (const key in next) {
@@ -30,6 +24,12 @@ export function patchStyle(el: Element, prev: Style, next: Style) {
       }
     }
   }
+  // indicates that the `display` of the element is controlled by `v-show`,
+  // so we always keep the current `display` value regardless of the `style` value,
+  // thus handing over control to `v-show`.
+  if ('_vod' in el) {
+    style.display = currentDisplay
+  }
 }
 
 const importantRE = /\s*!important$/