Это очень запутанный аспект MUI, но как только вы его получите - это очень просто.
Учтите, что вы пишете компонент, и стилизуйте его, используя JSX:
const useStyles = makeStyles(theme => ({
root: {
margin: theme.spacing(1)
},
in: {
padding: 8
}
}));
function MyComponent(){
const classes = useStyles();
return (
<Outside className={classes.root}>
<Inside className={classes.in} />
</Outside>
)
}
Обратите внимание, что компонент по сути является композицией (или иерархией) компонентов - Outside
и Inside
в этом минимальном примере, но компоненты MUI часто имеют более двух (стилизованных) вложенных компонентов.
Теперь вы хотите экспортировать этот компонент как часть библиотеки и позволить разработчикам стилизовать все задействованные компоненты (как Outside
, так и Inside
). Как бы вы это сделали?
Что делает MUI, это позволяет вам предоставить свойство classes
(вы увидите в документах имена правил для каждого компонента - root
и in
в нашем примере ), которые будут объединены с собственными правилами MUI или таблицей стилей, если вы будете sh (в коде MUI это делается с помощью withStyles HO C).
Для удобства каждый компонент также принимает свойство className
, которое объединяется с className элемента root (Outside
в нашем случае).