Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

MenuLink.js - Por quê?

Bom dia! Prazer,

O que o professor passou foi: MenuLink.js

export default function MenuLink( {children, to} ) {
    const localizacao = useLocation();

    return (
        <Link className={`${styles.link} ${localizacao.pathname === to ? styles.linkDestacado : ""}`} to={to}>{children}</Link>
    )
}

Menu.js

export default function Menu() {
    return (
        <header>
            <nav className={styles.navegacao}>
                <MenuLink to="/">Início</MenuLink>
                <MenuLink to="/sobremim">Sobre Mim</MenuLink>
            </nav>
        </header>
    )
}

1ª Pergunta: No Menu.js não seria melhor ocultar o "Início" e passar uma propriedade para colocarmos na própria tag? Eu tentei e funcionou mas o estilo de underline não funcionou 2ª Pergunta: No código do MenuLink.jss:

<Link className={`${styles.link} ${localizacao.pathname === to ? styles.linkDestacado : ""}`} to={to}>{children}</Link>

Por que não colocamos "=== {to}"? Apenas "to"? E também, por que "{children}"? Sendo que não estamos passando nada no Menu.js

1 resposta
solução!

Oi, E.Barboza, tudo bem ?

A respeito da sua primeira pergunta, no "Menu.js", ocultar o texto "Início" e passar uma propriedade para ser inserida na tag <MenuLink>, pode ser uma abordagem válida, desde que você ajuste o código do componente MenuLink para suportar essa propriedade adicional e verifique se a propriedade text-decoration: underline foi aplicada corretamente no arquivo CSS.

Com relação a sua segunda pergunta, no código do "MenuLink.js", a comparação localizacao.pathname === to verifica se a propriedade pathname do objeto localizacao é igual à propriedade to fornecida ao componente MenuLink. A comparação é feita com ===, que verifica igualdade estrita em JavaScript. Portanto, === to é a forma correta de fazer a comparação.

Quanto às chaves em {children}, elas são usadas para incorporar a expressão JavaScript no JSX. No código acima, {children} representa o conteúdo entre as tags de abertura e fechamento do componente MenuLink no "Menu.js". Mesmo que você não esteja passando explicitamente nenhum conteúdo entre as tags, o JSX permite que você deixe o componente vazio, e {children} será uma referência a qualquer conteúdo presente. É uma abordagem flexível para permitir que o componente renderize qualquer conteúdo que seja passado a ele.

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!