Skip to content

Commit d7ae390

Browse files
committed
fix class updates if new vnode doesnt contain any class data
1 parent 35ee5b1 commit d7ae390

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/platforms/web/runtime/modules/class.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import { genClassForVnode, concat, stringifyClass } from 'web/util/index'
55
function updateClass (oldVnode: any, vnode: any) {
66
const el = vnode.elm
77
const data: VNodeData = vnode.data
8-
if (!data.staticClass && !data.class) {
8+
const oldData: VNodeData = oldVnode.data
9+
if (!data.staticClass && !data.class &&
10+
(!oldData || (!oldData.staticClass && !oldData.class))) {
911
return
1012
}
1113

test/unit/modules/vdom/modules/class.spec.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,16 @@ describe('vdom class module', () => {
9292
expect(elm).not.toHaveClass('class2')
9393
expect(elm).not.toHaveClass('class3')
9494
})
95+
96+
it('should remove class for new nodes without class data', () => {
97+
const vnode1 = new VNode('p', {
98+
class: { class1: true, class2: false, class3: true }
99+
})
100+
const vnode2 = new VNode('p', {})
101+
let elm = patch(null, vnode1)
102+
elm = patch(vnode1, vnode2)
103+
expect(elm).not.toHaveClass('class1')
104+
expect(elm).not.toHaveClass('class2')
105+
expect(elm).not.toHaveClass('class3')
106+
})
95107
})

0 commit comments

Comments
 (0)