После продолжения работы над этим, кажется, что ответ «все работает иначе», поэтому стиль, который был бы элегантен в CSS + HTML, может быть неудобным или совершенно невозможным в CSS + JS.Мне действительно кажется, что модель CSS + JS в некоторых случаях выливает ребенка из воды, но сейчас так оно и есть.
Тем не менее, во многих случаях, когда вы хотите использовать компонент модификацииСтилизация, основанная на контексте (= наличие родительских компонентов или включающих в себя классы стилей), может быть разумно выполнена другими средствами, но она немного зависит от конкретного варианта использования.
В случаях, когда целью является изменениеповедение определенного компонента, просто поместите компонент в новый класс напрямую.Например:
const style = { root: { backgroundColor: 'red' } }
StyledWidget = withStyle(style, 'StyledWidget')(
() => <Widget classes={{ root: classes.root }} />
Там, где вы хотите сделать что-то повторно используемым (по крайней мере, на уровне кода), создать виджет стиля, который принимает компонент рендеринга, или создать компонент более высокого порядка, который внедряет классы стилей.Например:
<WidgetStyler component={TextInput} ... />
<WidgetStyler component={Buttton} />
или
StyledWidget = withWidgetStyling(TextInput)