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

159
Vistas
Cómo hacer condicional; estilo en reaccionar

Tengo un componente funcional React en el que tengo un botón y estoy comprobando si el botón está en la ventana gráfica o no, y lo estoy almacenando como un valor booleano en "isElementVisible".

Quiero hacer un estilo condicional aquí, si isElementVisible === false entonces quiero que sea pegajoso, de lo contrario déjalo como está.

estilo deseado cuando isElementVisible === false :

 .apply-btn{ margin: 0; width: 100%; @include media-breakpoint-up(lg) { width: 17rem; } @media (max-width: 599px) { position: fixed; bottom: 0; width: 50%; text-align: center; left: 50%; } }

Componente:

 /* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access */ import React, { useEffect, useState } from 'react'; const CalcOutput = (): JSX.Element => { const [isElementVisible, setIsElementVisible] = useState(false); const applyNowButton = document.getElementById('calc-applyNowBtn'); const isElementInViewPort = (element: HTMLElement) => { const rect = element.getBoundingClientRect(); return( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } const handleScroll = (event: Event) => { if(applyNowButton !== null) { const isVisible = isElementInViewPort(applyNowButton) isVisible ? setIsElementVisible(true) : setIsElementVisible(false); } }; window.addEventListener('scroll', handleScroll); return ( <button className="apply-btn" id="calc-applyBtn"> Apply </button> ); }; export default CalcOutput;
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Podría crear otra clase css (llamada apply-btn-sticky por ejemplo) que se aplica cuando se cumple una condición:

 .apply-btn-sticky { @media { position: sticky; } }

y luego configure el className para su botón según esa condición:

 <button className={this.isElementVisible ? "apply-btn" : "apply-btn apply-btn-sticky" id="calc-applyBtn"> Apply </button>

Puede reutilizar gran parte del estilo de su clase apply-btn ya que todo lo que desea cambiar es hacer que la posición sea fija.

about 4 years ago · Santiago Trujillo Denunciar

0

Como ya se respondió, puede usar operadores ternarios. Pero si ya tiene varias clases aplicadas y desea que una clase sea condicional, puede usar cadenas de plantilla.

 <div className={`btn btn-primary ${isActive ? 'active' : ' '}`}> ... </div>
about 4 years ago · Santiago Trujillo Denunciar

0

puede hacer esto con operadores ternarios, como puede ver en el siguiente código.

 <div className={!isElementVisible ? 'sticky' : 'navbar'} />
about 4 years ago · Santiago Trujillo 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