Я создал три файла, показанных ниже.
Цвет Paper
изменяется в соответствии со значением palette.type
, определенным в theme.js
.
Страница с palette.type: 'dark'
Страница с palette.type: 'light'
![Page with palette.type: 'light'](https://i.stack.imgur.com/FOho9.png)
Однако я не понимаю, как работает переменная theme
. Я добавил два console.log(theme)
к index.js
. Оба показывают palette.type: 'light'
независимо от значения в theme.js
.
Результат console.log
![Result of console.log](https://i.stack.imgur.com/1Tabl.png)
Как пройти theme
до index.js
(без импорта темы)?
компоненты / макет. js - общий компонент для применения одинакового макета ко всем страницам
import React from 'react';
import { MuiThemeProvider } from '@material-ui/core/styles';
import { theme } from '../utils/theme';
class Layout extends React.Component {
render() {
return(
<MuiThemeProvider theme={theme}>
{this.props.children}
</MuiThemeProvider>
)
}
}
export default Layout;
страниц / индекс. js - Одна специфика c страница
import Layout from '../components/Layout';
import { makeStyles, createStyles, useTheme, Paper } from '@material-ui/core';
const useStyles = makeStyles(theme => {
console.log('inside makeStyles');
console.log(theme);
return createStyles({
container: {
margin: '5px 5px 50px 5px'
}
})
});
export default function Index(props) {
const classes = useStyles(props);
const theme = useTheme();
console.log('inside Index')
console.log(theme);
return(
<Layout>
<h2>About</h2>
<Paper className={classes.container}>
<p>Sample test</p>
</Paper>
<Paper className={classes.container}>
<p>Sample test2</p>
</Paper>
</Layout>
)
};
utils / theme. js - Отдельный файл для записи theme
import { createMuiTheme } from '@material-ui/core/styles';
export const theme = createMuiTheme({
palette: {
type: 'dark'
}
});