【发布时间】:2022-01-06 22:03:33
【问题描述】:
我对 useEffect 在 React 中的工作方式感到困惑。以下代码有效,但与预期的方式相反。选中复选框后不会出现背景图片,而是在未选中复选框时出现,并在选中时消失。
function Beautifier() {
const [isBeautiful, setIsBeautiful] = React.useState(false);
React.useEffect(
function toggleBackground(shouldShow) {
document.body.classList.toggle('with-bg', shouldShow);
}
);
function handleChange() {
setIsBeautiful(!isBeautiful);
}
return (
<label>
<input type="checkbox" onChange={handleChange} />
Turn on pretty background
</label>
);
}
ReactDOM.render((
<Beautifier />
), document.querySelector('#root'));
我很确定我的问题是我在 useEffect 挂钩中缺少 return() =>,但是我能想到的所有事情都没有解决问题/或破坏了函数。不添加 CSS,因为该部分工作正常。
【问题讨论】:
-
不要手动切换类。使用新类重新渲染 html
-
这是正确的代码吗?你已经声明了
toggleBackground两次,然后从不调用它。shouldShow是什么? -
是的,顶部的切换背景停留在那里是一个错误。现在我对如何在 useEffect 挂钩中调用它感到困惑。
标签: javascript reactjs react-hooks use-effect