Если попытка переопределить стили по умолчанию для Material-UI не работает, следующий шаг - посмотреть, как определяются стили по умолчанию.
Ниже приведен отрывок из FormLabel. js, показывающий, как определяется сфокусированный стиль:
export const styles = theme => ({
/* Styles applied to the root element. */
root: {
color: theme.palette.text.secondary,
'&$focused': {
color: theme.palette.primary.main,
},
},
/* Pseudo-class applied to the root element if `focused={true}`. */
focused: {},
});
Эффект этого состоит в том, что сфокусированный цвет указывается в CSS правиле, например:
.MuiFormLabel-root.Mui-focused {
color: #3f51b5;
}
Эффект вашей попытки переопределения будет больше похож на:
.Mui-focused {
color: #000;
}
Стиль по умолчанию использует .Mui-focused
вместе с .MuiFormLabel-root
, чтобы гарантировать, что сфокусированный стиль имеет более высокую CSS специфичность чем несфокусированный стиль. Ваше переопределение, однако, имеет более низкую специфичность, чем сфокусированный стиль по умолчанию.
Вот модифицированная версия вашей песочницы, которая работает:
import React from "react";
import {
FormControl,
FormLabel,
RadioGroup,
Radio,
FormControlLabel,
withStyles
} from "@material-ui/core";
const options = [...Array(4).keys()].map(item => {
return { value: `value ${item}`, label: `label ${item}` };
});
const styles = {
formLabel: {
color: "#000",
"&.Mui-focused": {
color: "#000"
}
}
};
function App({ classes }) {
return (
<FormControl>
<FormLabel classes={{ root: classes.formLabel }}>Options</FormLabel>
<RadioGroup>
{options.map(option => {
const { value, label } = option;
return (
<FormControlLabel
control={<Radio />}
key={value}
value={value}
label={label}
/>
);
})}
</RadioGroup>
</FormControl>
);
}
export default withStyles(styles)(App);
Ссылки по теме: