diff --git a/packages/vant/src/tree-select/TreeSelect.tsx b/packages/vant/src/tree-select/TreeSelect.tsx index 0aef98b05..bfa35bd4b 100644 --- a/packages/vant/src/tree-select/TreeSelect.tsx +++ b/packages/vant/src/tree-select/TreeSelect.tsx @@ -112,9 +112,10 @@ export default defineComponent({ const onSidebarChange = (index: number) => { emit('update:mainActiveIndex', index); - emit('click-nav', index); }; + const onClickSidebarItem = (index: number) => emit('click-nav', index); + const renderSidebar = () => { const Items = props.items.map((item) => ( )); diff --git a/packages/vant/src/tree-select/test/index.spec.tsx b/packages/vant/src/tree-select/test/index.spec.tsx index c195dfbf0..46a228ec8 100644 --- a/packages/vant/src/tree-select/test/index.spec.tsx +++ b/packages/vant/src/tree-select/test/index.spec.tsx @@ -26,7 +26,23 @@ test('should render empty TreeSelect correctly', () => { expect(mount(TreeSelect).html()).toMatchSnapshot(); }); -test('should emit click-nav event when nav item is clicked', () => { +test('should emit update:mainActiveIndex event when mainActiveIndex is changed', async () => { + const wrapper = mount(TreeSelect, { + props: { + items: mockItems, + mainActiveIndex: 0, + }, + }); + + const navItems = wrapper.findAll('.van-tree-select__nav-item'); + await navItems[0].trigger('click'); + expect(wrapper.emitted('update:mainActiveIndex')).toBeFalsy(); + + await navItems[1].trigger('click'); + expect(wrapper.emitted('update:mainActiveIndex')?.[0]).toEqual([1]); +}); + +test('should emit click-nav event when nav item is clicked', async () => { const wrapper = mount(TreeSelect, { props: { items: mockItems, @@ -34,9 +50,10 @@ test('should emit click-nav event when nav item is clicked', () => { }); const navItems = wrapper.findAll('.van-tree-select__nav-item'); - navItems[1].trigger('click'); - expect(wrapper.emitted('update:mainActiveIndex')?.[0]).toEqual([1]); - expect(wrapper.emitted('click-nav')?.[0]).toEqual([1]); + await navItems[0].trigger('click'); + expect(wrapper.emitted('click-nav')?.[0]).toEqual([0]); + await navItems[0].trigger('click'); + expect(wrapper.emitted('click-nav')?.[1]).toEqual([0]); }); test('should emit click-item event when item is clicked', () => {