Я пытаюсь создать AppBar, вырезанный в верхней части страницы и наведенный на другой Drawer с React Hooks и Material Ui, используя имя класса.Все как описано в: https://material -ui.com / demos / drawers / # clipped-under-the-app-bar
Итак, мы имеем
const useStyles = makeStyles(theme => ({
root: {
display: 'flex',
height: '100%',
},
drawer: {
width: drawerWidth,
flexShrink: 0,
},
appBar: {
zIndex: theme.zIndex.drawer + 1,
},
menuButton: {
marginRight: 20,
[theme.breakpoints.up('md')]: {
display: 'none',
},
},
}));
И reder:
<div className={classes.root}>
<CssBaseline/>
<LoadingResults showLoading={showLoadingSpinner}/>
<AppBar position="fixed" className={classes.appBar} >
...
</AppBar>
....
Проблема в том, что стиль, применяемый с className, добавляется последним из элемента, поэтому он не переопределяет стиль оригинала:
class = "MuiPaper-root-12 MuiPaper-elevation4-18 MuiAppBar-root-3 MuiAppBar-positionFixed-4 MuiAppBar-colorPrimary-10 mui-fixed Hook-appBar-1b6f20g "
Я знаю, что могу использовать встроенные стили, но интересно знать, могу ли я переопределить стили, используя classNames с хуками, как это было с "устаревшим" компонентным подходом?
Вот песочница: https://codesandbox.io/s/w7njqorzy7?fontsize=14
Что происходит, когда в песочнице код работает нормально (панель инструментов над левосторонним контейнером) ![enter image description here](https://i.stack.imgur.com/0HmFu.png)
Но когда тот же проект загружен и скомпилирован, это не так: ![enter image description here](https://i.stack.imgur.com/vQdkv.png)
Глядя на отладчик, стили встроены.В песочнице крючки находятся внизу:
![enter image description here](https://i.stack.imgur.com/wBweo.png)
В браузере, когда приложение запускается с помощью «run start», оно вверху:
![enter image description here](https://i.stack.imgur.com/TXy7h.png)
Так вот в чем разница, но почему и как это исправить?