Я новичок в реактиве, так что это может быть просто, но я не могу на всю жизнь найти что-либо в документах, потому что этот элемент находится за пределами ReactDOM.Изменение стиля на <body> Элемент
Я использую материал-ui для пользовательского интерфейса и предоставляет две темы: lightBaseTheme
(по умолчанию) и darkBaseTheme
с более темными цветами. Вид дневных и ночных режимов. Проблема в том, что ни один стиль не применяется к <body>
, поэтому фон страницы не следует теме. Темная тема использует белый текст, который не отображается на белом фоне по умолчанию.
Я подозреваю, что мне нужно найти программное решение и установить цвет фона на основе загруженной в данный момент темы.
Но как? Я попытался поставить код в методе componentDidUpdate компонента верхнего уровня, но, похоже, всегда возвращает светлую тему. В любом случае я не уверен, что правильная практика заключается в прямой записи в DOM, хотя элемент body
находится за пределами того, на что повлияет React.
export default class app extends React.Component {
componentDidUpdate() {
const muiTheme = getMuiTheme();
const canvasColor = muiTheme.palette.canvasColor;
document.body.style.backgroundColor = canvasColor;
}
render() {
const muiTheme = getMuiTheme();
return (
<MuiThemeProvider muiTheme={getMuiTheme(darkBaseTheme)}>
<span>Rest of the app goes here</span>
</MuiThemeProvider>
);
}
};
Вызов getMuiTheme в componentDidUpdate всегда возвращает lightBaseTheme даже после того, как было установлено в визуализации вызова.
Возможно, я должен добавить, что конечная цель заключается в том, чтобы иметь возможность изменять тему на лету, поэтому прямое стилизация элемента <body
не является вариантом.
стилизация бы некоторые 'div' оборачивать все приложения, вместо' body' служить вашим потребностям? Таким образом, вы можете использовать стандартные реквизиты 'style'. –