Когда форма загружается изначально, значением вашей формы является пустой объект -
{}
Когда вы выбираете страну (скажем, «Андорра»), значением вашей формы становится:
{"country":[{"code":"AD","label":"Andorra","phone":"376"}]}
И затем, когда вы отменяете выбор страны, значение вашей формы становится следующим:
{"country":[]}
Пустой массив технически соответствует «обязательным» критериям (в конце концов, он не равен нулю), так что ваш требуемый обработчик не запускается.
Вы можете убедиться, что это происходит, показав значение формы в вашем App
классе -
const { control, handleSubmit, errors, register, getValues } = useForm({});
return (
<form noValidate onSubmit={handleSubmit(data => console.log(data))}>
<Countries control={control} errors={errors} register={register} />
<Button variant="contained" color="primary" type="submit">
Submit
</Button>
<code>{JSON.stringify(getValues())}</code>
</form>
);
Простое исправление - НЕ возвращать пустой массив как значение из вашего элемента управления - обновите ваш обработчик onChange
следующим образом -
onChange={([event, data]) => {
return data && data.length ? data : undefined;
}}