Reactjs 如何在第二次回调中更新console.log后记录状态?
我想要Reactjs 如何在第二次回调中更新console.log后记录状态?,reactjs,react-hooks,state,setstate,react-state,Reactjs,React Hooks,State,Setstate,React State,我想要console.log()更新前后的searchActive状态。最初,其值为false。当我以正常顺序将第二个console.log放在setSearchActive之后时,它会在状态更新之前运行,因此console.logs返回false。因此,我将第二个参数放在状态更新程序的回调函数中,但是,我得到一个错误,上面写着“警告:来自useState()和useReducer()挂钩的状态更新不支持第二个回调参数。要在呈现后执行副作用,请在组件体中使用useEffect()声明它”。第二个
console.log()
更新前后的searchActive
状态。最初,其值为false
。当我以正常顺序将第二个console.log
放在setSearchActive
之后时,它会在状态更新之前运行,因此console.log
s返回false
。因此,我将第二个参数放在状态更新程序的回调函数中,但是,我得到一个错误,上面写着“警告:来自useState()和useReducer()挂钩的状态更新不支持第二个回调参数。要在呈现后执行副作用,请在组件体中使用useEffect()声明它”。第二个日志永远不会运行。如何解决此问题
function startSearch (e) {
let searchresult = document.querySelector('.search-result');
if(!searchActive&&e.target.value!==null){
searchresult.classList.add('search-active');
console.log(searchActive);
setSearchActive(true,()=>{
console.log(searchActive);
});
}
}
您可以使用
useffect
钩子来触发副作用,就像console.log()
-。可能useffect(()=>console.log('searchActive'),[searchActive])
就是您要找的。否则您可以在react devtools中检查您的状态。@norbitrial谢谢。这部分地解决了问题。现在,当页面最初加载时,如何防止在状态更改之前调用useEffect?