React useEffect 钩子切换问题
React useEffect hook toggle issue
我对 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() =>,但我能想到的所有事情都没有解决 issue/or功能。不添加 CSS,因为那部分工作正常。
看来您已声明 toggleBackground
两次但没有调用它。您还缺少 useEffect
上的依赖项数组。我假设您打算在 useEffect
回调中实际调用 toggleBackground
。使用 isBeautiful
状态作为依赖项,并将其传递给 toggleBackground
函数。
React.useEffect(() => {
toggleBackground(isBeautiful);
}, [isBeautiful]);
您还应该使用功能状态更新来切换 isBeautiful
状态。
function handleChange() {
setIsBeautiful(isBeautiful => !isBeautiful);
}
我对 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() =>,但我能想到的所有事情都没有解决 issue/or功能。不添加 CSS,因为那部分工作正常。
看来您已声明 toggleBackground
两次但没有调用它。您还缺少 useEffect
上的依赖项数组。我假设您打算在 useEffect
回调中实际调用 toggleBackground
。使用 isBeautiful
状态作为依赖项,并将其传递给 toggleBackground
函数。
React.useEffect(() => {
toggleBackground(isBeautiful);
}, [isBeautiful]);
您还应该使用功能状态更新来切换 isBeautiful
状态。
function handleChange() {
setIsBeautiful(isBeautiful => !isBeautiful);
}