我是React的新手,所以這可能很簡單,但我不能在我的生活中找到文檔中的任何內容,因爲元素不在ReactDOM中。<body>元素上的樣式
我正在使用material-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'道具。 –