Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Cómo en React verificar si dos condiciones son verdaderas

Estoy haciendo Navbar y estoy un poco atascado. Aquí está mi código:

Navegación.jsx

 import React, {useState} from "react"; import { NavData } from "./NavigationData"; import "../styles/Navigation.css" export default function Navigation() { const [isMouseOver, setIsMouseOver] = useState(false); return ( <nav className="navbar"> <a href="/">LOGO</a> <div className="menu"> <ul onMouseEnter={() => {setIsMouseOver(true)}} onMouseLeave={() => {setIsMouseOver(false)}}> {NavData.map((val, key) => { return ( <li key={key.id} onClick={() => window.location.pathname = val.link} > {isMouseOver ? (<div className="name">{val.name}</div>) : (<div className="icon">{val.icon}</div>) } </li> ) })} </ul> </div> </nav> ); }

NavigationData.jsx

 import React from "react"; import { FaHome, FaImages, FaShoppingBag, FaQuestionCircle, FaProductHunt } from "react-icons/fa"; export const NavData = [ { id: 1, name: "Home", icon: <FaHome />, link: "/home" }, { id: 2, name: "Gallery", icon: <FaImages />, link: "/gallery" }, { id: 3, name: "Products", icon: <FaProductHunt />, link: "/products" }, { id: 4, name: "Shop", icon: <FaShoppingBag />, link: "/shop" }, { id: 5, name: "About", icon: <FaQuestionCircle />, link: "/about" } ]
  1. Estoy comprobando si el mouse está entrando o saliendo de un ul y reemplazando los íconos con texto. Pero tampoco necesito mostrar texto cuando el tamaño de la pantalla es inferior a 768 px y solo mostrar íconos. En el momento en que el mouse está sobre los íconos desaparecen y debido a esto en CSS no veo nada:
 @media screen and (max-width: 768px){ .name { display: none; } }

Y la segunda pregunta es: ¿Cómo puedo sustituir el ícono por el texto cuando paso el mouse sobre cada ícono por separado? Por ejemplo, paso el cursor sobre el ícono de Inicio => desaparece y el texto Inicio aparece en su lugar. Gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Muy bien, primera pregunta, podemos usar CSS simple para esta solución. CSS le permite diseñar un elemento secundario cuando se pasa el mouse sobre su elemento principal, que es exactamente lo que necesitamos aquí.

En lugar de apuntar a un valor de ancho máximo, apuntaremos a un valor de ancho mínimo para reducir el código. Por lo tanto, agregue una clase a y cada texto e ícono de navegación y cada

  • llega a ser el padre que responde a su segunda pregunta, el código final es así:

     <ul> {NavData.map((val, key) => { return ( <li className="childLI" key={key.id} onClick={() => (window.location.pathname = val.link)} > <div className="name">{val.name}</div> <div className="icon">{val.icon}</div> </li> ); })} </ul>

    y el CSS:

     .name { display:none } @media screen and (min-width: 768px) { .childLI:hover .icon{ display:none; } .childLI:hover .name{ display:block; } }

    editar: no indica ni pasa el mouse por encima de las funciones.

  • about 4 years ago · Juan Pablo Isaza Relatório
    Responde à pergunta
    Encontrar trabalhos remotos

    Descubra a nova forma de encontrar um emprego!

    melhores empregos
    Principais categorias de trabalho
    Empresas
    Postar vaga Preços Comercial
    Jurídico
    Termos e Condições Política de privacidade
    © 2026 PeakU Inc. All Rights Reserved.
    Andres GPT
    Recomende algumas ofertas para mim
    Preciso de ajuda