From d4fda0b4b0def4471edccc4b79c6cbb61719bad3 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 4 Mar 2021 19:43:57 +0800 Subject: [PATCH] fix(ActionSheet): should not reopen when closed (#8272) --- src/action-sheet/index.tsx | 6 +++--- src/action-sheet/test/index.spec.ts | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/action-sheet/index.tsx b/src/action-sheet/index.tsx index 7897b5041..684587cf6 100644 --- a/src/action-sheet/index.tsx +++ b/src/action-sheet/index.tsx @@ -1,4 +1,4 @@ -import { PropType } from 'vue'; +import { nextTick, PropType } from 'vue'; // Utils import { createNamespace, pick } from '../utils'; @@ -115,11 +115,11 @@ export default createComponent({ callback(item); } - emit('select', item, index); - if (props.closeOnClickAction) { updateShow(false); } + + nextTick(() => emit('select', item, index)); }; return ( diff --git a/src/action-sheet/test/index.spec.ts b/src/action-sheet/test/index.spec.ts index 6b3290794..7507de8d8 100644 --- a/src/action-sheet/test/index.spec.ts +++ b/src/action-sheet/test/index.spec.ts @@ -1,7 +1,8 @@ +import { nextTick } from 'vue'; import { mount } from '../../../test'; import ActionSheet from '..'; -test('should emit select event after clicking option', () => { +test('should emit select event after clicking option', async () => { const wrapper = mount(ActionSheet, { props: { show: true, @@ -10,6 +11,8 @@ test('should emit select event after clicking option', () => { }); wrapper.find('.van-action-sheet__item').trigger('click'); + + await nextTick(); expect(wrapper.emitted('select')!.length).toEqual(1); expect(wrapper.emitted('select')![0]).toEqual([ { @@ -32,7 +35,7 @@ test('should call callback function after clicking option', () => { expect(callback).toHaveBeenCalledTimes(1); }); -test('should not emit select event after clicking loading option', () => { +test('should not emit select event after clicking loading option', async () => { const wrapper = mount(ActionSheet, { props: { show: true, @@ -41,10 +44,11 @@ test('should not emit select event after clicking loading option', () => { }); wrapper.find('.van-action-sheet__item').trigger('click'); + await nextTick(); expect(wrapper.emitted('select')).toBeFalsy(); }); -test('should not emit select event after clicking disabled option', () => { +test('should not emit select event after clicking disabled option', async () => { const wrapper = mount(ActionSheet, { props: { show: true, @@ -53,6 +57,7 @@ test('should not emit select event after clicking disabled option', () => { }); wrapper.find('.van-action-sheet__item').trigger('click'); + await nextTick(); expect(wrapper.emitted('select')).toBeFalsy(); });