Fala Julie, tudo bem? Espero que sim!
Não esta funcionando pois você está utilizando duas classNames
, ou seja, o react esta utilizando apenas a classe botao-logo
, e não a cabecalho__menu
, sendo assim o querySelector
não encontra esse elemento. Caso queira utilizar mais de uma classe em um elemento, você pode apenas dar um espaço entre elas:
className="cabecalho__menu botao-logo"
E um outro ponto, é que no seu botão você ja utiliza o onClick
, então não tem necessidade de utilizar o addEventListener
dentro daquela função ja que você ja esta utilizando o evento de click direto no botão.
E lembre-se que no React nós não costumamos utilizar o document.querySelector
ou um addEventListener
, o que você pode fazer para abrir ou fechar esse menu é utilizar o gerenciamento de estado, criando um estado para indicar se deve ficar aberto ou não:
const [ativo, setAtivo] = useState(false)
Depois no seu botão você pode verificar se o estado e falso ou não:
<button
class={ativo && "menu-lateral--ativo"}
onClick={Grid}
></button>
Utilizei o operador ternário &&
para adicionar a classe somente se o estado ativo
for verdadeiro.
E depois podemos modificar a função que você criou, para apenas alterar o valor do estado:
function Grid() {
setAtivo(!ativo)
}
Dessa forma, você precisa apenas utilizar o estado ativo
para definir se esta aberto ou não.
Se ficou meio confusa a explicação, recomendo dar uma olhada na formação React aqui da Alura, la você pode fazer os cursos react e entender um pouco mais sobre a bibilioteca.
Mas antes de fazer esse curso, recomendo seguir primeiro esse plano de estudos de JavaScript, para compreender melhor a linguagem antes de partir para uma framework. (Aprender apenas o básico de JavaScript e ja ir para uma framework pode não ser uma boa ideia, por isso recomendo fazer esse plano de estudos antes)
Espero ter ajudado, abraços e bons estudos :D