Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

131
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
    Responde la pregunta
    Encuentra empleos remotos

    ¡Descubre la nueva forma de encontrar empleo!

    Top de empleos
    Top categorías de empleo
    Empresas
    Publicar vacante Precios Comercial
    Legal
    Términos y condiciones Política de privacidad
    © 2026 PeakU Inc. All Rights Reserved.
    Andres GPT
    Recomiéndame algunas ofertas
    Necesito ayuda