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

341
Views
¿Cómo pasar el atributo de datos personalizado al componente con estilo?

Tengo este componente con estilo, donde estoy tratando de pasar el atributo DATA que proviene de los accesorios. (Esta es la solución que tenemos en Stack Overflow)

 export const InlineEditReadViewErrorContainer = styled.div.attrs(props => ({ 'data-cy': props.dataCy }))` border: 2px solid #de350b; border-radius: 3px; `;

Así es como uso este componente con estilo en el código

 <InlineEditReadViewErrorContainer dataCy='blabla'> {readView} </InlineEditReadViewErrorContainer>

Pero esto no cambia nada

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

0

Creo que debemos usar correctamente los atributos que se agregan a un componente en React y más si se necesitan solo para darle estilo a un componente.

Deberíamos usar tantas propiedades nativas como sea posible pero sin comprometer los datos privados que estarían expuestos en el HTML que el cliente muestra en broser, por lo tanto:

  • Si va a utilizar atributos de datos :

Recuerde cómo nombrar estos atributos: el nombre del atributo no debe contener letras mayúsculas y debe tener al menos un carácter después del prefijo "datos-".

Nota: solo usaría el más simple posible, con booleanos para dar un conjunto de propiedades como se describe en la primera respuesta, por ejemplo:

componente.js

 <Error data-active={true}> {readView} </Error>

componente.styles.js

 export const Error = styled.div` &[data-active="true"] { border: 2px solid #de350b; border-radius: 3px; } `;
  • Si desea usar accesorios personalizados sin que se muestren en el DOM como se describe en el segundo comentario, use accesorios transitorios :

Para muestra:

componente.js

 <Error $active={true}> {readView} </Error>

componente.styles.js

 export const Error = styled.div` ${({$active}) => $active ? css` border: 2px solid #de350b; border-radius: 3px; `: null} `;
about 4 years ago · Juan Pablo Isaza Report

0

El accesorio ya debería estar "aprobado" en el sentido de que aparecerá en el componente con el fin de usarlo en Cypress. Si desea usarlo internamente, también puede usar accesorios transitorios como este

 const Comp = styled.div` color: ${props => props.$draggable || 'black'}; `; render( <Comp $draggable="red" draggable="true"> Drag me! </Comp> );
about 4 years ago · Juan Pablo Isaza Report

0

Fue mucho más fácil. Puede pasar el atributo de datos directamente donde usa el componente con estilo y todo estará bien.

 <InlineEditReadViewErrorContainer data-cy='dateInput'> {textValue} </InlineEditReadViewErrorContainer>

ingrese la descripción de la imagen aquí

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!