Цвет фона регулируется в TableRow
. Чтобы получить правильную специфичность (вам никогда не нужно использовать «! Важное» при переопределении стилей Material-UI), вам нужно использовать класс «hover», аналогичный тому, что делается в TableRow
.
Цвет контролируется в TableCell
, так что это уровень, на котором вам нужно его контролировать.
Для рабочего решения, в стилях у вас будет что-то вроде:
const styles = theme => ({
tableRow: {
"&$hover:hover": {
backgroundColor: "blue"
}
},
tableCell: {
"$hover:hover &": {
color: "pink"
}
},
hover: {}
});
затем в рендеринге:
<TableRow
hover
key={row.id}
classes={{ hover: classes.hover }}
className={classes.tableRow}
>
<TableCell
className={classes.tableCell}
component="th"
scope="row"
>
{row.name}
</TableCell>
Вот рабочая версия, основанная на вашей песочнице:
Вот аналогичный пример, но с использованием «selected» вместо «hover»:
https://codesandbox.io/s/llyqqwmr79
Используются следующие стили:
const styles = theme => ({
tableRow: {
"&$selected, &$selected:hover": {
backgroundColor: "purple"
}
},
tableCell: {
"$selected &": {
color: "yellow"
}
},
selected: {}
});
и некоторые состояния:
const [selectedID, setSelectedID] = useState(null);
и изменение рендеринга TableRow на:
<TableRow
hover
key={row.id}
onClick={() => {
setSelectedID(row.id);
}}
selected={selectedID === row.id}
classes={{ selected: classes.selected }}
className={classes.tableRow}
>
v4 Material-UI будет включать некоторые изменения , которые должны значительно упростить переопределение стилей (и легче понять, как это сделать успешно, не глядя на исходный код).