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
Javascript 使用钩子时,React上下文更新状态不反映在嵌套函数中_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 使用钩子时,React上下文更新状态不反映在嵌套函数中

Javascript 使用钩子时,React上下文更新状态不反映在嵌套函数中,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我在最初渲染react组件时显示了两个按钮。如果我点击主按钮。相关的onClick函数将发送一个事件来更新reducer状态,然后执行嵌套函数,再次打印状态 我面临的问题是更新后的状态没有反映在 嵌套函数。你能告诉我我错过了什么吗 import React,{useffect,useContext}来自“React”; 从“./Main/Main”导入{MainContext}; //主要 函数FirstTab(){ ////访问上下文 const{mainState,mainDispatch}

我在最初渲染react组件时显示了两个按钮。如果我点击主按钮。相关的onClick函数将发送一个事件来更新reducer状态,然后执行嵌套函数,再次打印状态

我面临的问题是更新后的状态没有反映在 嵌套函数。你能告诉我我错过了什么吗

import React,{useffect,useContext}来自“React”;
从“./Main/Main”导入{MainContext};
//主要
函数FirstTab(){
////访问上下文
const{mainState,mainDispatch}=useContext(MainContext);
常量filterState=mainState.filter;
log(“AppMainState->SalesTab:”,filterState);
const updateFilterContext=(数据)=>{
日志(“内部过滤器更新:”,数据);
mainDispatch({type:“UPDATE_FILTER”,数据:data});
};
//党卫军
常量PrimaryClick2=(过滤器状态)=>{
console.log(“主单击2”);
log(“AppMainState->PrimaryClick2:”,filterState);
};
常量PrimaryClick1=(过滤器状态)=>{
console.log(“主单击1”);
log(“AppMainState->PrimaryClick1:”,filterState);
主单击2(过滤器状态);
};
常量PrimaryClick=(过滤器状态)=>{
console.log(“主单击”);
log(“AppMainState->PrimaryClick:”,filterState);
updateFilterContext({selectedValue:“NEWVALUE”});
主单击1(过滤器状态);
};
useffect(()=>{
console.log(“步骤1:生成第一个选项卡”);
},[mainState.filter.applyFilter]);
返回(
主要的,重要的
次要的
);
}
导出默认的第一个选项卡;

我猜
mainDispatch
是异步的

您可以通过以下方式检查更改:

useEffect(() => {
  console.log('mainState changed')
  console.log(mainState.filter)
}, [mainState])

我猜
mainDispatch
是异步的

您可以通过以下方式检查更改:

useEffect(() => {
  console.log('mainState changed')
  console.log(mainState.filter)
}, [mainState])

谢谢你的回复。我已经在useffect Hook中添加了主状态。更新状态值未进入嵌套函数。感谢您的响应。我已经在useffect Hook中添加了主状态。更新状态值未进入嵌套函数。