Javascript useState函数未立即更新
我正在使用react管理框架。我正在使用useState方法设置是否选中复选框:Javascript useState函数未立即更新,javascript,reactjs,Javascript,Reactjs,我正在使用react管理框架。我正在使用useState方法设置是否选中复选框: const [checked, setChecked] = useState(false); 根据checked的值,我修改了一些其他常量。但是,我遇到了一个问题,即检查值没有立即更新。这一切都以这种方式发生: const handleCheckbox = () => { setChecked(!checked); if (checked === true)
const [checked, setChecked] = useState(false);
根据checked的值,我修改了一些其他常量。但是,我遇到了一个问题,即检查值没有立即更新。这一切都以这种方式发生:
const handleCheckbox = () =>
{
setChecked(!checked);
if (checked === true)
{
input.onChange('');
}
else
{
input.onChange(defaultVal);
}
}
有没有像setState中那样的回调函数?或者我应该使用完全不同的东西
提前感谢。您必须注意,功能组件中的状态更新是异步的,并且也受闭包的影响,因此在相同的渲染周期中不会看到更新的值 有关更多详细信息,请查看此帖子: 另外,与类组件中的this.setState不同,useState的状态更新程序不提供回调 您可以使用useEffect实现相同的行为
const handleCheckbox = () =>
{
setChecked(!checked);
}
const initialRender = useRef(true);
useEffect(() => {
if(!initialRender.current) {
if (checked === true)
{
input.onChange('');
}
else
{
input.onChange(defaultVal);
}
}
else {
initialRender.current = false;
}
}, [checked])
如果要使用useState钩子在状态更改时调用回调函数,可以使用附加到状态更改的useffect钩子。应该是这样的
useEffect(() => {
if (checked === true)
{
input.onChange('');
}
else
{
input.onChange(defaultVal);
}
}, [!checked])
,这将帮助您解决问题,谢谢。