Kaynağa Gözat

fix(runtime-dom): properly handle style properties with undefined values (#5348)

fix #5322
Thorsten Lünborg 4 yıl önce
ebeveyn
işleme
85af139863

+ 12 - 1
packages/runtime-dom/__tests__/patchStyle.spec.ts

@@ -37,7 +37,18 @@ describe(`runtime-dom: style patching`, () => {
 
 
   it('remove if falsy value', () => {
   it('remove if falsy value', () => {
     const el = document.createElement('div')
     const el = document.createElement('div')
-    patchProp(el, 'style', { color: 'red' }, { color: undefined })
+    patchProp(el, 'style', null, {
+      color: undefined,
+      borderRadius: null
+    })
+    expect(el.style.cssText.replace(/\s/g, '')).toBe('')
+
+    patchProp(
+      el,
+      'style',
+      { color: 'red' },
+      { color: null, borderRadius: undefined }
+    )
     expect(el.style.cssText.replace(/\s/g, '')).toBe('')
     expect(el.style.cssText.replace(/\s/g, '')).toBe('')
   })
   })
 
 

+ 1 - 0
packages/runtime-dom/src/modules/style.ts

@@ -45,6 +45,7 @@ function setStyle(
   if (isArray(val)) {
   if (isArray(val)) {
     val.forEach(v => setStyle(style, name, v))
     val.forEach(v => setStyle(style, name, v))
   } else {
   } else {
+    if (val == null) val = ''
     if (name.startsWith('--')) {
     if (name.startsWith('--')) {
       // custom property definition
       // custom property definition
       style.setProperty(name, val)
       style.setProperty(name, val)