Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

265
Views
La interfaz de usuario de React (es decir, la representación de mi aplicación) no es consistente con lo que se muestra en el elemento de inspección

Problema extraño aquí. Tengo una barra de progreso que se ve así:

 1 export default function PercentageBar(props) { 2 return ( 3 <div className="w-full h-1 my-1 bg-stone-200"> 4 <div className={`h-1 bg-orange-500 w-[${props.percent}%]`} /> 5 </div> 6 ); 7 }

El estilo se realiza a través de Tailwind CSS. Si no está familiarizado, básicamente lo que sucede es que el div externo es tan ancho como el div principal, tiene una altura de 1, un margen en la parte superior e inferior de 1 y está coloreado en un tono grisáceo. Luego, el div interno se representa encima de eso, que también tiene una altura de 1. El div interno está en naranja y es tan ancho como props.percent (un porcentaje del ancho total del div principal).

He verificado que props.percent se transfiere correctamente.

Cuando props.percent cambia dinámicamente en tiempo de ejecución, la línea 4 en particular a veces actúa de manera extraña (independientemente del porcentaje pasado).

Por ejemplo, si props.percent era igual a 48 y ahora es igual a 52, Inspect Element me dice que la línea es

 <div className={`h-1 bg-orange-500 w-[52%]`} />

cual es correcta. Sin embargo, se representa como a continuación (una barra completa)

 <div className={`h-1 bg-orange-500 w-[100%]`} />

Además, a veces se representa como props.percent igual a 0. Esto solo ocurre después de props.percent cambia de valor.

He intentado hacer actualizaciones completas, restablecer cachés, etc., pero el problema persiste esporádicamente y en diferentes navegadores. Si actualizo lo suficiente, a veces el problema no aparece. ¿Alguna idea de lo que está pasando aquí? ¡Muy apreciado!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tengo el mismo problema similar, pero con los classNames de clase para abordar esto, he enviado los classNames de clase desde donde estoy ! el component component palabra clave important es cualquier cosa que cambie su clase. Espero que esto resuelva tu problema.

 export default function PercentageBar({witdhPercentage}) { return ( <div className="w-full h-1 my-1 bg-stone-200"> <div className={`h-1 bg-orange-500 ${witdhPercentage}`} /> </div> ); }
 <PercentageBar witdhPercentage={`!${w-[${props.percent}%]}`} />
about 4 years ago · Juan Pablo Isaza Report

0

Si está utilizando Tailwind 3 (o Tailwind 2 en modo JIT), no puede crear clases dinámicamente, ya que no se incluirán en el CSS final.

Para su valor variable, podría considerar usar un apoyo de style en su lugar para establecer el ancho. Por ejemplo:

 <div style={{width: `${props.percent}%`}} className={'h-1 bg-orange-500'} />
about 4 years ago · Juan Pablo Isaza Report

0

¡Encontré la respuesta! Gracias a Ed Lucas por señalarme en la dirección correcta. Tiene razón: no puedes crear nombres de clase dinámicamente en Tailwind. Puede encontrar la explicación sobre eso aquí .

Sin embargo, usar la etiqueta de estilo que sugirió Ed no funcionó para mí. En cambio, lo que hice fue crear una nueva función que contiene una declaración de cambio que devuelve cadenas ininterrumpidas de nombres de clase para cada valor de ancho. En otras palabras:

 function getWidthClassName(percent) { switch (percent) { case 0: return 'w-[0%]'; case 1: return 'w-[1%]'; case 2: return 'w-[2%]'; ... case 99: return 'w-[99%]'; case 100: return 'w-[100%]'; default: return 'w-[0%]'; } }

Luego, mi barra de progreso se veía así:

 export default function PercentageBar({percent}) { let widthClassName = getWidthClassName(percent); return ( <div className="w-full h-1 my-1 bg-stone-200"> <div className={`h-1 bg-orange-500 ${widthClassName}`} /> </div> );

Esto funciona porque en lugar de construir dinámicamente nombres de clase en tiempo de ejecución, ahora los construimos estáticamente. Tailwind está feliz y nosotros estamos felices.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!