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

224
Vistas
pasar estilos externos a un componente con estilo MUI

Aunque he visto preguntas similares, ninguna parece abordar mi situación.

Estoy migrando MUI v4 a MUI v5, y me encantan los casos en los que un estilo particular viene de forma externa. Por ejemplo, así es como se vería usando makeStyles :

 const useStyles = makeStyles((theme) => { typographyRoot: ({ color }) => ({ padding: theme.spacing(1), color }) }) const Example = ({ color }) => { const classes = useStyles({ color }) return ( <Typography variant="body1" classes={{ root: classes.typographyRoot }}> Some example </Typography> ) }

Ahora estoy intentando hacer esto usando componentes con styled , ¿cómo pasaría el accesorio de color como lo hice en useStyles?

Esto es lo que tengo actualmente:

 const StyledTypography = styled(Typography)(({ theme }) => ({ padding: theme.spacing(1), color // how to pass in color in this styled component })) const Example = ({ color }) => { return ( <StyledTypography variant="body1"> Some example </StyledTypography> ) }

Supongamos que pudiera envolver StyledComponent en una función y pasarla allí, pero siento que debe haber una forma más apropiada de hacerlo. Específicamente:

 const getStyledTypography = (color) => styled(Typography)(({ theme }) => ({ padding: theme.spacing(1), color })) const Example = ({ color }) => { const StyledTypography = getStyledTypography(color) return ( <StyledTypography variant="body1"> Some example </StyledTypography> ) }

De todos modos, ¿cuál es la forma correcta de pasar accesorios adicionales a un componente con estilo de esta manera?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debería pasarse como prop.

 <StyledTypography variant="body1" color={'red'}> Some example </StyledTypography> const StyledTypography = styled(Typography, { shouldFrowardProp:(prop) => prop !== 'color' })(({ theme, color }) => ({ padding: theme.spacing(1), color: color }))

Usa shouldForwardProp para no pasar el accesorio al elemento dom.

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