Есть пара вопросов.styled
из Emotion поддерживает создание только одного имени класса для каждого использования.Он не обеспечивает никакой поддержки структуры classes: {indicator: {styles}}
в вашем примере.
Ниже приведен синтаксис, позволяющий использовать styled
для предоставления имени класса для класса-индикатора Tabs
:
const StyledTabs = styled(({ className, ...other }) => {
return <Tabs {...other} classes={{ indicator: className }} />;
})({
backgroundColor: "black"
});
Однако это не работает полностью надежно, потому что элемент <style>
для стилей Emotion не всегда появляется после элементов <style>
из JSS (используется для стилевого оформления Material-UI) в<head>
документа.Я не уверен, как изменить точку вставки для стилей Emotion, но вы можете прочитать здесь о том, как изменить точку вставки для JSS.Я включил этот подход в свою песочницу ниже.
Вот песочница, которая показывает эту работу:
Другой вариант синтаксиса:следующее, что позволит вам контролировать более одного класса вкладок:
const StyledTabs = styled(({ className, ...other }) => {
return <Tabs {...other} classes={{ root: className, flexContainer: "flexContainer", indicator: "indicator" }} />;
})({
"& .indicator": {
background: "black"
},
"& .flexContainer": {
flexDirection: "row-reverse"
}
});