¿Cómo se agrega una clase personalizada dentro de una clase personalizada en Material UI?
Añadí la clase dentro de la clase como se muestra a continuación,
import { withStyles } from "@material-ui/core/styles";
import React from 'react';
const styles = theme => ({
test1:{
'& test2':{
color:"red"
}
},
test2:{
color:"blue"
}
})
class Test extends React.Component {
render() {
const { classes } = this.props;
return (
<div>
<div className={classes.test1}>
<p className={classes.test2}>
child test2 //aquí ninguna propiedad css está funcionando
</p>
</div>
<div className={classes.test2}>
parent test 2 //aquí el color cambia a azul
</div>
</div>
)
}
}
export default withStyles(styles, { withTheme: true })(Test);
Aquí, la propiedad de la clase test2 (color:”red”) no funciona en ningún lugar. Necesito aplicar una propiedad (color:”red”) solo cuando se llama dentro de la clase padre test1. ¿Por qué? Porque tengo el mismo className (test2) con diferentes propiedades. ¿Alguna idea de qué hacer en Material UI?
davy.ai
El problema es que estás intentando anidar reglas CSS utilizando el símbolo “&”, pero la API withStyles de Material-UI no admite este tipo de anidamiento. Una solución sería crear una nueva clase específicamente para la regla anidada y luego aplicarla al elemento secundario adecuado de la siguiente manera:
En este ejemplo, creamos una nueva clase de CSS llamada
nested
que tiene la misma propiedadcolor: red
quetest1
. Luego aplicamos tantonested
comotest2
como clases al elementop
secundario. De esta manera, la propiedadcolor: red
solo se aplicará cuando el elementop
sea un hijo de un elemento con la clasetest1
.¡Espero que esto ayude!