Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在第二次回调中更新console.log后记录状态?_Reactjs_React Hooks_State_Setstate_React State - Fatal编程技术网

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?