onChange={(_, checked) => {}}
С чего вы взяли, что функция в onChange принимает второй аргумент?
setChecked(checked);
Это асинхронное действие, оно не блокирует поток исполнения до тех пор, пока значение в state изменится.
handleClearField();
Следовательно, при вызове этой функции вы работаете ещё с текущим значением, а не с новым.
Один из возможных вариантов решения:
const [checked, setChecked] = useState(false);
const handleClearField = (checked) => {
setChecked(checked);
if (checked) {
console.log('1');
} else {
console.log('2');
}
};
return (
<>
<FormControlLabel
control={
<Checkbox
checked={checked}
onChange={(event) => handleClearField(event.target.checked)}
/>
}
label="Тест"
/>
</>
);