在 React 中为 Body 元素设置样式
Set styles on the Body element in React
在 React 中设置 body 元素的样式:
document.body
在useEffect
事件处理程序中访问主体元素。- 使用该
style
属性在 body 元素上设置样式。 - 例如,
document.body.style.backgroundColor = 'lime'
。
import {useEffect} from 'react'; import './App.css'; export default function App() { useEffect(() => { // 👇 add class to body element document.body.classList.add('bg-salmon'); // 👇️ set style on body element document.body.style.backgroundColor = 'salmon'; return () => { // 👇️ optionally remove styles when component unmounts document.body.style.backgroundColor = null; document.body.classList.remove('bg-salmon'); }; }, []); return ( <div> <h2>Hello world</h2> </div> ); }
这是css
示例的文件。
.bg-salmon { background-color: salmon; color: white; }
我们可以访问对象body
上的元素document
。
您可以使用
样式
对象读取元素的样式或在元素上设置新样式。
如果需要向 body 元素添加类,请使用
classList.add
方法。
We passed an empty dependencies array to the
useEffect hook
because we only want to set styles on the body
element once – when the
component mounts.
If you need to remove the styles when the component unmounts, return a cleanup
function from the useEffect
hook.
useEffect(() => { // 👇 add class to body element document.body.classList.add('bg-salmon'); // 👇️ set style on body element document.body.style.backgroundColor = 'salmon'; return () => { // 👇️ optionally remove styles when component unmounts document.body.style.backgroundColor = null; document.body.classList.remove('bg-salmon'); }; }, []);
To remove a style, you can just set it to null
.
You can also set classes to the body element when an event is triggered, e.g. a
button is clicked.
export default function App() { const handleClick = () => { document.body.style.backgroundColor = 'salmon'; document.body.style.color = 'white'; }; return ( <div> <button onClick={handleClick}>Click</button> </div> ); }
We set the onClick
prop on the button element, so every time it is clicked,
the handleClick
function gets invoked.
If you need to toggle styles on the body element when an event occurs,
conditionally check whether the styles are already present and remove them if
they are, otherwise set the styles.
export default function App() { const handleClick = () => { if (document.body.style.backgroundColor) { document.body.style.backgroundColor = null; document.body.style.color = null; } else { document.body.style.backgroundColor = 'salmon'; document.body.style.color = 'white'; } }; return ( <div> <button onClick={handleClick}>Click</button> </div> ); }
如果backgroundColor
样式已经在 body 元素上设置,我们通过将其设置为 将其删除null
,否则我们将其设置为salmon
。