From: Kaine <121680374+kaine0923@users.noreply.github.com> Date: Sat, 23 Dec 2023 07:23:34 +0000 (+0800) Subject: fix(runtime-vapor): fix v-show value (#70) X-Git-Tag: v3.6.0-alpha.1~16^2~702 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3a86cf144433490de3ca167dddf67c01c7709b9;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-vapor): fix v-show value (#70) --- diff --git a/packages/runtime-vapor/__tests__/vShow.spec.ts b/packages/runtime-vapor/__tests__/vShow.spec.ts index fb1447e336..e3c69d06f8 100644 --- a/packages/runtime-vapor/__tests__/vShow.spec.ts +++ b/packages/runtime-vapor/__tests__/vShow.spec.ts @@ -15,26 +15,27 @@ beforeEach(() => { afterEach(() => { host.remove() }) - +const createDemo = (defaultValue: boolean) => + defineComponent({ + setup() { + const visible = ref(defaultValue) + function handleClick() { + visible.value = !visible.value + } + const t0 = template('

hello world

') + const n0 = t0() + const { + 0: [n1], + 1: [n2], + } = children(n0) + withDirectives(n2, [[vShow, () => visible.value]]) + on(n1 as HTMLElement, 'click', handleClick) + return n0 + }, + }) describe('directive: v-show', () => { test('basic', async () => { - const demo = defineComponent({ - setup() { - const visible = ref(true) - function handleClick() { - visible.value = !visible.value - } - const t0 = template('

hello world

') - const n0 = t0() - const { - 0: [n1], - 1: [n2], - } = children(n0) - withDirectives(n2, [[vShow, () => visible.value]]) - on(n1 as HTMLElement, 'click', (...args) => handleClick(...args)) - return n0 - }, - }) + const demo = createDemo(true) render(demo as any, {}, '#host') const btn = host.querySelector('button') expect(host.innerHTML).toBe('

hello world

') @@ -44,4 +45,14 @@ describe('directive: v-show', () => { '

hello world

', ) }) + test('should hide content when default value is false', async () => { + const demo = createDemo(false) + render(demo as any, {}, '#host') + const btn = host.querySelector('button') + const h1 = host.querySelector('h1') + expect(h1?.style.display).toBe('none') + btn?.click() + await nextTick() + expect(h1?.style.display).toBe('') + }) }) diff --git a/packages/runtime-vapor/src/directives/vShow.ts b/packages/runtime-vapor/src/directives/vShow.ts index f419053ec6..07def8b3c8 100644 --- a/packages/runtime-vapor/src/directives/vShow.ts +++ b/packages/runtime-vapor/src/directives/vShow.ts @@ -3,7 +3,7 @@ import type { ObjectDirective } from '../directive' const vShowMap = new WeakMap() export const vShow: ObjectDirective = { - beforeMount(node, { source: value }) { + beforeMount(node, { value }) { vShowMap.set(node, node.style.display === 'none' ? '' : node.style.display) setDisplay(node, value) }, @@ -13,7 +13,7 @@ export const vShow: ObjectDirective = { setDisplay(node, value) }, - beforeUnmount(node, { source: value }) { + beforeUnmount(node, { value }) { setDisplay(node, value) }, }