From d4ecdd548b0811b6f1062d8f04110b906bd5ddce Mon Sep 17 00:00:00 2001 From: zkwolf Date: Mon, 11 Jan 2021 12:53:11 +0800 Subject: [PATCH 1/2] fix: radio cancel change #3047 --- components/radio/__tests__/group.test.js | 37 ++++++++++++++++++++++++ components/vc-checkbox/src/Checkbox.jsx | 4 +++ 2 files changed, 41 insertions(+) diff --git a/components/radio/__tests__/group.test.js b/components/radio/__tests__/group.test.js index 877548e9af..e05ea9af96 100644 --- a/components/radio/__tests__/group.test.js +++ b/components/radio/__tests__/group.test.js @@ -214,4 +214,41 @@ describe('Radio', () => { }); expect(wrapper.html()).toMatchSnapshot(); }); + + it('when onChange do not change the value, change event can be also triggered.', async () => { + const onChange = jest.fn(); + const onChangeRadioGroup = () => { + onChange(); + wrapper.setProps({ value: 'A' }); + }; + + const wrapper = mount( + { + props: ['value'], + render() { + const value = this.value || 'A'; + return ( + + A + B + C + + ); + }, + }, + { sync: false }, + ); + + const radios = wrapper.findAll('input'); + + await asyncExpect(() => { + radios[1].trigger('click'); + expect(onChange.mock.calls.length).toBe(1); + }); + + await asyncExpect(() => { + radios[1].trigger('click'); + expect(onChange.mock.calls.length).toBe(2); + }); + }); }); diff --git a/components/vc-checkbox/src/Checkbox.jsx b/components/vc-checkbox/src/Checkbox.jsx index fc8deedaf8..e5b94e835a 100644 --- a/components/vc-checkbox/src/Checkbox.jsx +++ b/components/vc-checkbox/src/Checkbox.jsx @@ -87,6 +87,10 @@ export default defineComponent({ this.__emit('update:checked', eventObj); this.__emit('change', eventObj); this.eventShiftKey = false; + // fix https://github.com/vueComponent/ant-design-vue/issues/3047 + if ('checked' in props) { + this.$refs.input.checked = props.checked; + } }, onClick(e) { this.__emit('click', e); From fb4ce536a0795a38c31f20c8173e1ccfdfc45971 Mon Sep 17 00:00:00 2001 From: zkwolf Date: Wed, 13 Jan 2021 21:29:23 +0800 Subject: [PATCH 2/2] chore: update checkbox --- components/vc-checkbox/src/Checkbox.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/vc-checkbox/src/Checkbox.jsx b/components/vc-checkbox/src/Checkbox.jsx index e5b94e835a..9c2d653f00 100644 --- a/components/vc-checkbox/src/Checkbox.jsx +++ b/components/vc-checkbox/src/Checkbox.jsx @@ -69,6 +69,10 @@ export default defineComponent({ if (!('checked' in props)) { this.sChecked = e.target.checked; } + // fix https://github.com/vueComponent/ant-design-vue/issues/3047 + if ('checked' in props) { + this.$refs.input.checked = props.checked; + } this.$forceUpdate(); // change前,维持现有状态 e.shiftKey = this.eventShiftKey; const eventObj = { @@ -87,10 +91,6 @@ export default defineComponent({ this.__emit('update:checked', eventObj); this.__emit('change', eventObj); this.eventShiftKey = false; - // fix https://github.com/vueComponent/ant-design-vue/issues/3047 - if ('checked' in props) { - this.$refs.input.checked = props.checked; - } }, onClick(e) { this.__emit('click', e);