Xin chào, hàm setState phải nhận vào 1 state mới, replace state cũ nhưng đoạn
setState({
...state,
[event.target.name]: event.target.checked,
});
bị update chậm so với mình mong đợi.
Cụ thể là :
export default function CheckboxesGroup() {
const [state, setState] = React.useState({
gilad: false,
jason: false,
antoine: false,
});
const handleChange = (event) => {
setState({
...state,
[event.target.name]: event.target.checked,
});
console.log(state) //<=========
};
const { gilad, jason, antoine } = state;
return (
<Box sx={{ display: 'flex' }}>
<FormControl sx={{ m: 3 }} component="fieldset" variant="standard">
<FormGroup>
<FormControlLabel
control={
<Checkbox checked={gilad} onChange={handleChange} name="gilad" />
}
label="Gilad Gray"
/>
<FormControlLabel
control={
<Checkbox checked={jason} onChange={handleChange} name="jason" />
}
label="Jason Killian"
/>
<FormControlLabel
control={
<Checkbox checked={antoine} onChange={handleChange} name="antoine" />
}
label="Antoine Llorca"
/>
</FormGroup>
</FormControl>
</Box>
);
}
Kết quả :
{gilad: false, jason: false, antoine: false} đáng lẽ phải là true - false -false
{gilad: true, jason: false, antoine: false} đáng lẽ phải là true - true -false
{gilad: true, jason: true, antoine: false} áng lẽ phải là true - true - true
Nhưng mong muốn của mình phải là:
check vào checkbox thứ nhất thì : true, false, false
check vào checkbox thứ hai thì : true, true, false.
check cái thứ 3 thì cả 3 đều true.
Mong được giúp đỡ. Cảm ơn!