From 90d32de7bf92ac5dbc5f090cb9a9fcf4ae427fda Mon Sep 17 00:00:00 2001 From: huxiyang <1872591453@qq.com> Date: Thu, 11 Jul 2024 09:54:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix(cascader):=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E7=BD=AEvalue=E6=9C=AA=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/cascader/cascader.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/packages/cascader/cascader.tsx b/src/packages/cascader/cascader.tsx index 85dd140377..a9c84f5195 100644 --- a/src/packages/cascader/cascader.tsx +++ b/src/packages/cascader/cascader.tsx @@ -210,7 +210,7 @@ const InternalCascader: ForwardRefRenderFunction< if ( currentValue === undefined || - currentValue !== defaultValue || + ![defaultValue, value].includes(currentValue) || !state.tree.nodes.length ) { return @@ -251,7 +251,7 @@ const InternalCascader: ForwardRefRenderFunction< } } - if (needToSync.length && currentValue === defaultValue) { + if (needToSync.length && [defaultValue, value].includes(currentValue)) { const pathNodes = state.tree.getPathNodesByValue(needToSync) pathNodes.forEach((node, index) => { state.tabsCursor = index From 0839d32e9f65be50966de00939a7c7411ee6a92c Mon Sep 17 00:00:00 2001 From: huxiyang <1872591453@qq.com> Date: Thu, 11 Jul 2024 10:25:07 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix(cascader):=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E7=BD=AEvalue=E6=9C=AA=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/cascader/cascader.taro.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/packages/cascader/cascader.taro.tsx b/src/packages/cascader/cascader.taro.tsx index 92df6761db..aaecbf8151 100644 --- a/src/packages/cascader/cascader.taro.tsx +++ b/src/packages/cascader/cascader.taro.tsx @@ -211,7 +211,7 @@ const InternalCascader: ForwardRefRenderFunction< if ( currentValue === undefined || - currentValue !== defaultValue || + ![defaultValue, value].includes(currentValue) || !state.tree.nodes.length ) { return @@ -252,7 +252,7 @@ const InternalCascader: ForwardRefRenderFunction< } } - if (needToSync.length && currentValue === defaultValue) { + if (needToSync.length && [defaultValue, value].includes(currentValue)) { const pathNodes = state.tree.getPathNodesByValue(needToSync) pathNodes.forEach((node, index) => { state.tabsCursor = index From 405b32f4260d5779f1692e67a9d12ddd667157b5 Mon Sep 17 00:00:00 2001 From: huxiyang <1872591453@qq.com> Date: Thu, 11 Jul 2024 10:46:54 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix(cascader):=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E7=BD=AEvalue=E6=9C=AA=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/cascader/demos/h5/demo1.tsx | 12 ++++++------ src/packages/cascader/demos/h5/demo2.tsx | 14 +++++++------- src/packages/cascader/demos/h5/demo5.tsx | 4 ++-- src/packages/cascader/demos/taro/demo1.tsx | 12 ++++++------ src/packages/cascader/demos/taro/demo2.tsx | 14 +++++++------- src/packages/cascader/demos/taro/demo5.tsx | 4 ++-- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/packages/cascader/demos/h5/demo1.tsx b/src/packages/cascader/demos/h5/demo1.tsx index 57e4d56809..6ad63821de 100644 --- a/src/packages/cascader/demos/h5/demo1.tsx +++ b/src/packages/cascader/demos/h5/demo1.tsx @@ -38,16 +38,16 @@ const Demo1 = () => { text: '长沙', disabled: true, children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, + { value: '芙蓉区', text: '芙蓉区' }, + { value: '岳麓区', text: '岳麓区' }, ], }, { - value: '温州', - text: '温州', + value: '岳阳', + text: '岳阳', children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, + { value: '岳阳楼区', text: '岳阳楼区' }, + { value: '云溪区', text: '云溪区' }, ], }, ], diff --git a/src/packages/cascader/demos/h5/demo2.tsx b/src/packages/cascader/demos/h5/demo2.tsx index 8bee8e809c..0b8059a5d8 100644 --- a/src/packages/cascader/demos/h5/demo2.tsx +++ b/src/packages/cascader/demos/h5/demo2.tsx @@ -38,16 +38,16 @@ const Demo2 = () => { text1: '长沙', disabled: true, items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, + { value1: '芙蓉区', text1: '芙蓉区' }, + { value1: '岳麓区', text1: '岳麓区' }, ], }, { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, + value1: '岳阳', + text1: '岳阳', + children: [ + { value1: '岳阳楼区', text1: '岳阳楼区' }, + { value1: '云溪区', text1: '云溪区' }, ], }, ], diff --git a/src/packages/cascader/demos/h5/demo5.tsx b/src/packages/cascader/demos/h5/demo5.tsx index 53e3112adf..92834f7fc1 100644 --- a/src/packages/cascader/demos/h5/demo5.tsx +++ b/src/packages/cascader/demos/h5/demo5.tsx @@ -6,8 +6,8 @@ const Demo5 = () => { const [value5, setValue5] = useState(['广东省', '广州市']) const [optionsDemo5] = useState([ { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '通州区', text: '通州区', id: 11, pidd: 1 }, + { value: '经海路', text: '经海路', id: 111, pidd: 11 }, { value: '广东省', text: '广东省', id: 2, pidd: null }, { value: '广州市', text: '广州市', id: 21, pidd: 2 }, ]) diff --git a/src/packages/cascader/demos/taro/demo1.tsx b/src/packages/cascader/demos/taro/demo1.tsx index cac7dd58a7..b8dbadeafd 100644 --- a/src/packages/cascader/demos/taro/demo1.tsx +++ b/src/packages/cascader/demos/taro/demo1.tsx @@ -38,16 +38,16 @@ const Demo1 = () => { text: '长沙', disabled: true, children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, + { value: '芙蓉区', text: '芙蓉区' }, + { value: '岳麓区', text: '岳麓区' }, ], }, { - value: '温州', - text: '温州', + value: '岳阳', + text: '岳阳', children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, + { value: '岳阳楼区', text: '岳阳楼区' }, + { value: '云溪区', text: '云溪区' }, ], }, ], diff --git a/src/packages/cascader/demos/taro/demo2.tsx b/src/packages/cascader/demos/taro/demo2.tsx index 1dfd4839cd..2ad2a411a1 100644 --- a/src/packages/cascader/demos/taro/demo2.tsx +++ b/src/packages/cascader/demos/taro/demo2.tsx @@ -38,16 +38,16 @@ const Demo2 = () => { text1: '长沙', disabled: true, items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, + { value1: '芙蓉区', text1: '芙蓉区' }, + { value1: '岳麓区', text1: '岳麓区' }, ], }, { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, + value1: '岳阳', + text1: '岳阳', + children: [ + { value1: '岳阳楼区', text1: '岳阳楼区' }, + { value1: '云溪区', text1: '云溪区' }, ], }, ], diff --git a/src/packages/cascader/demos/taro/demo5.tsx b/src/packages/cascader/demos/taro/demo5.tsx index 0dff010fe8..4df6f2023b 100644 --- a/src/packages/cascader/demos/taro/demo5.tsx +++ b/src/packages/cascader/demos/taro/demo5.tsx @@ -6,8 +6,8 @@ const Demo5 = () => { const [value5, setValue5] = useState(['广东省', '广州市']) const [optionsDemo5] = useState([ { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '通州区', text: '通州区', id: 11, pidd: 1 }, + { value: '经海路', text: '经海路', id: 111, pidd: 11 }, { value: '广东省', text: '广东省', id: 2, pidd: null }, { value: '广州市', text: '广州市', id: 21, pidd: 2 }, ]) From a3949b53e3f209d8e6f158f011e2d940a3759e5e Mon Sep 17 00:00:00 2001 From: huxiyang <1872591453@qq.com> Date: Thu, 11 Jul 2024 13:08:49 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix(cascader):=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E7=BD=AEvalue=E6=9C=AA=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cascader/__tests__/cascader.spec.tsx | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/packages/cascader/__tests__/cascader.spec.tsx b/src/packages/cascader/__tests__/cascader.spec.tsx index 54a381532b..6299e5eaf8 100644 --- a/src/packages/cascader/__tests__/cascader.spec.tsx +++ b/src/packages/cascader/__tests__/cascader.spec.tsx @@ -321,7 +321,33 @@ describe('Cascader', () => { ).toBe(0) expect(container).toMatchSnapshot() }) - + it('init Value without defaultValue', async () => { + const { container } = render( + + ) + const element = container.querySelectorAll( + '.active.nut-tabpane .active .nut-cascader-item-title' + )[0] + expect(element).toHaveTextContent('鼓楼区') + }) + it('init Value with both valu and defaultValue', async () => { + const { container } = render( + + ) + const element = container.querySelectorAll( + '.active.nut-tabpane .active .nut-cascader-item-title' + )[0] + expect(element).toHaveTextContent('台江区') + }) it('select', async () => { const change = vi.fn() const pathChange = vi.fn() @@ -377,13 +403,10 @@ describe('Cascader', () => { /> ) - expect(container).toMatchSnapshot() - expect(container.querySelector('.nut-popup')).toBe const tabPane = container.querySelectorAll('.nut-tabs-titles-item')[0] fireEvent.click(tabPane) - expect(container).toMatchSnapshot() }) it('ref', async () => {