Пользовательский интерфейс React Material - переопределить использование withStyles

Я работаю над проектом и использую пользовательский интерфейс React Material, и мне нужно переопределить цвет нижней границы компонента Select в сфокусированном состоянии. Вот что я использую прямо сейчас

import { Select as MuiSelect, withStyles } from '@material-ui/core';
import { BRAND_COLORS } from '../../constants/colors';

const FONT_SIZE = 20;

const Select = withStyles({
  root: {
    fontSize: FONT_SIZE,
    '&:focus': {
      backgroundColor: 'transparent',
    },
    '& .MuiInput-underline:after': {
      borderBottomColor: BRAND_COLORS.blue,
    },
  },
})(MuiSelect);

export default Select;

<Select
  native
  startAdornment={<InputAdornment position="start"><FilterListIcon /></InputAdornment>}
  value={service.regionalFocus}
  onChange={(event) => this.props.changeSelectedRegionalFocus({
      providerId, serviceId: service.service_id, regionalFocus: 
event.target.value})
      }
    >
      {regionalFocus.map((region, index) => service.service_regions[region.value].length ? (
        <option key={index} value={region.value}>
          {region.label}
        </option>
      ) : null)}
    </Select>

Я могу изменить размер шрифта, однако borderBottomColor не регистрируется. Какие-нибудь мысли?

1 ответ

Похоже, вы пытаетесь стилизовать Input это ребенок Select. ПереопределитьInput props, включая стиль, вам нужно будет передать их как переопределение в inputProps подпирать Select.

Что-то типа:

const MySelect = (props) => {
  return (
    <Select {...props} inputProps={{ classes: { underline: props.classes.inputOverride } }}
  );
};

export default withStyles({
  root: {
    fontSize: FONT_SIZE,
    '&:focus': {
      backgroundColor: 'transparent',
    }
  },
  inputOverride: {
    '&:after': {
      borderBottomColor: BRAND_COLORS.blue,
    }
  }
})(MySelect);

Документы для Select а также Inputздесь вам поможет: https://material-ui.com/api/select/https://material-ui.com/api/input/

А также исходный код, чтобы действительно понять, как все это работает: https://github.com/mui-org/material-ui/blob/d956b40539d7b724ca6026aeae96e1f42dd22331/packages/material-ui/src/Select/Select.js

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