diff --git a/packages/vant/src/uploader/Uploader.tsx b/packages/vant/src/uploader/Uploader.tsx index 7c43dadaba7..6d2a385e51e 100644 --- a/packages/vant/src/uploader/Uploader.tsx +++ b/packages/vant/src/uploader/Uploader.tsx @@ -309,6 +309,7 @@ export default defineComponent({ return ( diff --git a/packages/vant/src/uploader/test/__snapshots__/index.spec.ts.snap b/packages/vant/src/uploader/test/__snapshots__/index.spec.ts.snap index 0148ac3e1be..0bd45bc6d16 100644 --- a/packages/vant/src/uploader/test/__snapshots__/index.spec.ts.snap +++ b/packages/vant/src/uploader/test/__snapshots__/index.spec.ts.snap @@ -222,6 +222,88 @@ exports[`render preview image 1`] = ` `; +exports[`should handle key correctly when delete middle image 1`] = ` +
+
+
+
+ +
+ + +
+
+
+ + +
+
+
+
+ +
+ + +
+
+
+ + +
+
+
+
+ +
+ + +
+
+
+ + +
+
+
+ + + +
+
+
+`; + exports[`should not render upload input when using readonly prop 1`] = `
diff --git a/packages/vant/src/uploader/test/index.spec.ts b/packages/vant/src/uploader/test/index.spec.ts index d670d31be21..ec3f7cb272d 100644 --- a/packages/vant/src/uploader/test/index.spec.ts +++ b/packages/vant/src/uploader/test/index.spec.ts @@ -430,6 +430,26 @@ test('delete preview image', () => { expect(wrapper.emitted<[File]>('delete')![0]).toBeTruthy(); }); +test('should handle key correctly when delete middle image', () => { + const wrapper = mount(Uploader, { + props: { + modelValue: [ + { url: IMAGE, name: '1' }, + { url: IMAGE, name: '2' }, + { url: IMAGE, name: '3' }, + ], + }, + }); + + // 删除中间图片 + const deleteButtons = wrapper.findAll('.van-uploader__preview-delete'); + deleteButtons[1].trigger('click'); + + expect(wrapper.emitted<[File]>('update:modelValue')![0][0]).toHaveLength(2); + expect(wrapper.html()).toMatchSnapshot(); + expect(wrapper.emitted<[File]>('delete')![0]).toBeTruthy(); +}); + test('before-delete prop return false', () => { const wrapper = mount(Uploader, { props: { @@ -716,7 +736,7 @@ test('expose reuploadFile method', async () => { }, }); - const {reuploadFile} = (wrapper.vm as UploaderInstance); + const { reuploadFile } = wrapper.vm as UploaderInstance; expect(reuploadFile).toBeTypeOf('function'); const input = wrapper.find('.van-uploader__input');