diff --git a/packages/runtime-dom/__tests__/directives/vShow.spec.ts b/packages/runtime-dom/__tests__/directives/vShow.spec.ts index 5e837650854..70b69f2df1c 100644 --- a/packages/runtime-dom/__tests__/directives/vShow.spec.ts +++ b/packages/runtime-dom/__tests__/directives/vShow.spec.ts @@ -151,6 +151,32 @@ describe('runtime-dom: v-show directive', () => { expect($div.style.display).toEqual('') }) + test('the value of `display` set by v-show should not be overwritten by the style attribute when updated (object value)', async () => { + const style = ref({ + display: 'block', + width: '100px', + }) + const display = ref(false) + const component = defineComponent({ + render() { + return withVShow(h('div', { style: style.value }), display.value) + }, + }) + render(h(component), root) + + const $div = root.children[0] + + expect($div.style.display).toEqual('none') + + style.value.width = '50px' + await nextTick() + expect($div.style.display).toEqual('none') + + display.value = true + await nextTick() + expect($div.style.display).toEqual('block') + }) + // #2583, #2757 test('the value of `display` set by v-show should not be overwritten by the style attribute when updated (with Transition)', async () => { const style = ref('width: 100px')