Переопределить стиль пользовательского интерфейса материала без использования HOC?

Есть ли способ переопределить стиль компонентов Material UI без необходимости создавать совершенно новый компонент с помощью withStyles()?

Например, скажем, я отображаю следующее и просто хочу изменить цвет метки «Удалить»:

<div style = {styles.rowFooter}>
  <FormControlLabel
    control = {<ClearIcon />}
    label = "Clear"
    title = "Clear all fields."
    onClick = {clearFields}
  />
  <FormControlLabel
    control = {<DeleteIcon />}
    label = "Delete"
    title = "Delete this row."
    onClick = {deleteRow}
  />
</div>

Для этого мне обычно приходилось:

  • Создайте новую функцию стилей, которая возвращает { color: "maroon" }.
  • Создайте новый компонент для отображения кнопки «Удалить».
  • Заверните мой новый компонент withStyles(newStylesFn)(MyComponent).

Но я не хочу делать все это. Есть ли способ избежать этого?

Обновлять:

Один известный мне способ — просто передать CSS className. Я искал что-то помимо этого, потому что в этой ситуации даже не работает переопределение вложенного элемента.

То, что я действительно хотел бы сделать, это просто передать style = {{ color: "maroon" }}, но это меняет только цвет значка, а не фактический текст метки...

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
964
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать свойство классы для переопределения стилей, предоставляемых пользовательским интерфейсом материала, вместо className.

<FormControlLabel
  control = {<DeleteIcon />}
  label = "Delete"
  title = "Delete this row."
  classes = {{
    label: 'labelStyle'
  }}
/>

стили.css

.labelStyle {
  color: maroon !important;
}

Хотя это не идеальное решение, оно по-прежнему работает без использования withStyles().

Большое спасибо @Yakov-Kiszner. Я не мог найти упоминания об этом в документах. Если кто-нибудь знает, где это, пожалуйста, добавьте к этому ответу. Спасибо!

Wayne Bloss 27.02.2019 01:53

Также актуально - до этого решения я пытался использовать обычный CSS и читал о том, как вы можете изменить точку вставки JSS, поэтому вам не нужно использовать !important. Порядок внедрения CSS

Wayne Bloss 27.02.2019 01:57

Похоже, что в документации рекомендуется использовать CSS-in-JS с помощью библиотеки JSS. Вы можете узнать больше на Путь к лучшему стилю. Однако в документации также показано, как использовать классы с JSS (не CSS). Переопределение с помощью классов

Yakov Kiszner 27.02.2019 11:42

Обе книги я читал, спасибо. Модули CSS с переменными CSS — это будущее IMO, и я собираюсь избегать JSS и других наборов CSS-in-JS, где это возможно.

Wayne Bloss 27.02.2019 18:48

Другие вопросы по теме