A tag raiz App
no sandbox se parece com:
import React from 'react'
import { useState, useCallback } from 'react'
export default function App() {
let [dark, setDark] = useState(true)
const toggleDark = useCallback(() => {
setDark(!dark)
}, []);
return (
<main>
<p onClick={toggleDark}>{dark ? 'dark mode' : 'light mode'}</p>
</main>
)
}
Conteúdo da página inicial - “modo escuro”.
Pressione-o, altere para "modo de luz".
Pressione novamente em "modo leve" - nada mudou. Parece que o estado do aplicativo mudou apenas uma vez.
Como forçar a mudança de estado toda vez que clico em <p> ?
Você pode ver a amostra completa no Replit sandbox
Você precisa adicionar
dark
uma dependência ao arquivouseCallback
. Caso contrário, a função é armazenada em cache e sempre assume quedark
possui o valor inicial detrue
:Obrigado a @snaksa pela resposta correta