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..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 = {