isString,
isObject,
EMPTY_ARR,
- extend,
- PatchFlags
+ extend
} from '@vue/shared'
import {
ComponentInternalInstance,
if (isReactive(props) || SetupProxySymbol in props) {
props = extend({}, props)
}
- // class normalization only needed if the vnode isn't generated by
- // compiler-optimized code
- if (props.class != null && !(patchFlag & PatchFlags.CLASS)) {
+ if (props.class != null) {
props.class = normalizeClass(props.class)
}
let { style } = props
createApp().mount(App, container)
expect(container.innerHTML).toBe(`0`)
})
+
+it('should correctly normalize class with on-the-fly template compilation', () => {
+ const container = document.createElement('div')
+ const App = {
+ template: `<div :class="{ test: demoValue, test2: !demoValue }"></div>`,
+ data() {
+ return {
+ demoValue: true
+ }
+ }
+ }
+ createApp().mount(App, container)
+ const classes = container.firstElementChild!.classList
+ expect(classes.contains('test')).toBe(true)
+ expect(classes.contains('test2')).toBe(false)
+})