Objetivo muy sencillo. Cuando se hace clic en una casilla de verificación, establezca el estado de itemOne en verdadero inicialmente. Entonces debería cambiar de estado si se vuelve a hacer clic. Cuando se invoca itemOneSelected, itemOne se muestra como falso .
La pregunta: ¿Por qué itemOne se establece en falso en lugar de verdadero cuando se invoca itemOneSelected?
const [itemOne, setItemOne] = useState(false); const itemOneSelected = () => { setItemOne(!itemOne) console.log(itemOne) } <FormControlLabel control={<Checkbox onClick => { itemOneSelected() } } />}Recuerde que useState es asíncrono, por lo que no se actualizará de inmediato. Para obtener el valor de console.log para registrar su valor, debe agregar un useEffect.
useEffect(() => { console.log(itemOne) },[itemOne])