2
respostas

Por que o onClick não funciona no componente <BotaoPrincipal /> ?

Ao colocar o onClick diretamente no componente lá no componente de , o evento não é disparado:

<div  className={styles.botaoContainer}> 
        <BotaoPrincipal onClick={ () => navegacao(-1) } tamanho={'lg'} >
          Voltar
        </BotaoPrincipal>
      </div>

O evento só é disparado como colocado na div :

<div onClick={ () => navegacao(-1) } className={styles.botaoContainer}> 
    <BotaoPrincipal tamanho={'lg'} >
      Voltar
    </BotaoPrincipal>
  </div>

Poderiam me explicar o por quê disso?

2 respostas

O comportamento que você descreve pode estar relacionado ao gerenciamento de eventos no React. Quando você adiciona o evento onClick diretamente ao componente BotaoPrincipal, o evento é tratado pelo próprio componente e não pela div que o envolve.

Se o componente BotaoPrincipal não está configurado para passar o evento para seus elementos filhos ou não está configurado para lidar com eventos personalizados, o evento pode não ser propagado corretamente.

Quando você adiciona o evento diretamente à div, está garantindo que o evento seja capturado na div e, assim, é possível garantir que a função navegacao(-1) seja chamada corretamente.

Para que o primeiro código funcione corretamente, você pode verificar se o componente BotaoPrincipal está configurado para lidar com eventos ou se há alguma propriedade específica que permite passar eventos para os elementos internos.

Outra alternativa seria envolver o componente BotaoPrincipal em um elemento que suporte eventos, como um div ou span, e adicionar o onClick a esse elemento:

<div className={styles.botaoContainer} onClick={() => navegacao(-1)}>
  <BotaoPrincipal tamanho={'lg'}>
    Voltar
  </BotaoPrincipal>
</div>

Isso garantirá que o evento seja capturado pelo elemento envolvente, mesmo que o componente interno não o suporte diretamente. Certifique-se de que o elemento envolvente não tenha estilos ou comportamentos indesejados que possam interferir na aparência ou funcionalidade do botão.

Caso tenha conseguido esclarecer suas dúvidas, fico feliz em ter ajudado. Estou à disposição para qualquer outra questão que possa surgir. Um abraço! Se este post foi útil, por favor, marque como solucionado ✓. Desejo a você excelentes estudos!