*/
import {
+ type ObjectDirective,
Suspense,
Teleport,
Transition,
app.mount(container)
expect(`Hydration style mismatch`).not.toHaveBeenWarned()
})
+
+ // #11189
+ test('should not warn for directives that mutate DOM in created', () => {
+ const container = document.createElement('div')
+ container.innerHTML = `<div class="test red"></div>`
+ const vColor: ObjectDirective = {
+ created(el, binding) {
+ el.classList.add(binding.value)
+ },
+ }
+ const app = createSSRApp({
+ setup() {
+ return () =>
+ withDirectives(h('div', { class: 'test' }), [[vColor, 'red']])
+ },
+ })
+ app.mount(container)
+ expect(`Hydration style mismatch`).not.toHaveBeenWarned()
+ })
})
})
// check hydration mismatch
if (
(__DEV__ || __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__) &&
+ // #11189 skip if this node has directives that have created hooks
+ // as it could have mutated the DOM in any possible way
+ !(dirs && dirs.some(d => d.dir.created)) &&
propHasMismatch(el, key, props[key], vnode, parentComponent)
) {
logMismatchError()