fix: radio cancel change (#3517)

* fix: radio cancel change #3047

* chore: update checkbox
pull/3538/head
zkwolf 2021-01-14 10:13:50 +08:00 committed by GitHub
parent a6c3eae304
commit 2904ceeab9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 0 deletions

View File

@ -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 (
<RadioGroup ref="radioGroup" value={value} onChange={onChangeRadioGroup}>
<Radio value="A">A</Radio>
<Radio value="B">B</Radio>
<Radio value="C">C</Radio>
</RadioGroup>
);
},
},
{ 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);
});
});
});

View File

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