Преглед изворни кода

fix(style): always set new styles

close #12901
close #12946
Evan You пре 2 година
родитељ
комит
f5ef882a78

+ 2 - 4
src/platforms/web/runtime/modules/style.ts

@@ -91,10 +91,8 @@ function updateStyle(oldVnode: VNodeWithData, vnode: VNodeWithData) {
   }
   for (name in newStyle) {
     cur = newStyle[name]
-    if (cur !== oldStyle[name]) {
-      // ie9 setting to null has no effect, must use empty string
-      setProp(el, name, cur == null ? '' : cur)
-    }
+    // ie9 setting to null has no effect, must use empty string
+    setProp(el, name, cur == null ? '' : cur)
   }
 }
 

+ 15 - 0
test/unit/modules/vdom/modules/style.spec.ts

@@ -36,4 +36,19 @@ describe('vdom style module', () => {
     expect(elm.style.fontSize).toBe('')
     expect(elm.style.display).toBe('block')
   })
+
+  it('border related style should update correctly', () => {
+    const vnode1 = new VNode('p', {
+      style: { border: '10px solid red', 'border-bottom': '10px solid blue' }
+    })
+    const vnode2 = new VNode('p', {
+      style: {
+        'border-right': '10px solid red',
+        'border-bottom': '10px solid blue'
+      }
+    })
+    patch(null, vnode1)
+    const elm = patch(vnode1, vnode2)
+    expect(elm.style.borderBottom).toBe('10px solid blue')
+  })
 })