fix(style): always set new styles

close #12901
close #12946
This commit is contained in:
Evan You 2023-12-06 23:17:02 +08:00
parent d6468c4c38
commit f5ef882a78
2 changed files with 17 additions and 4 deletions

View File

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

View File

@ -36,4 +36,19 @@ describe('vdom style module', () => {
expect(elm.style.fontSize).toBe('') expect(elm.style.fontSize).toBe('')
expect(elm.style.display).toBe('block') 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')
})
}) })