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 是否对event.target.value未正确更新的useState问题作出反应?_Javascript_Reactjs_Ecmascript 6_Material Ui_Use State - Fatal编程技术网

Javascript 是否对event.target.value未正确更新的useState问题作出反应?

Javascript 是否对event.target.value未正确更新的useState问题作出反应?,javascript,reactjs,ecmascript-6,material-ui,use-state,Javascript,Reactjs,Ecmascript 6,Material Ui,Use State,我的问题是我的useState得到了错误的号码 例如,当我打印e.target.value时,它输出打印1,但我选择的索引给我2 或者当我得到0个selectedIndex时,检索1个类似的东西。你知道为什么会这样吗 <Select id="SelectGrade" value={selectedIndex} //Important part onChange={(e) => { console

我的问题是我的useState得到了错误的号码

例如,当我打印e.target.value时,它输出打印1,但我选择的索引给我2 或者当我得到0个selectedIndex时,检索1个类似的东西。你知道为什么会这样吗

<Select
 id="SelectGrade"
  value={selectedIndex}
  //Important part
                      
   onChange={(e) => {
    console.log(e.target.value);
     setSelectedIndex(e.target.value),
     console.log(selectedIndex);

}}
>
 {pflegeengel.map(({ Vorname }, index) => {
        return (
          <MenuItem value={index} key={index}>
              {Vorname}
           </MenuItem>
          );
       })}
</Select>
{
console.log(如target.value);
设置所选索引(如目标值),
console.log(selectedIndex);
}}
>
{pflegeengel.map({Vorname},index)=>{
返回(
{Vorname}
);
})}

当您在设置后立即控制台状态值时,将给出旧值。这是你的问题吗?无论如何,状态将得到更新。如果要检查值更改,请在设置后按以下方式使用

React.useEffect(() => { console.log(selectedIndex)}, [selectedIndex]);

当您在设置后立即控制台状态值时,将为您提供旧值。这是你的问题吗?无论如何,状态将得到更新。如果要检查值更改,请在设置后按以下方式使用

React.useEffect(() => { console.log(selectedIndex)}, [selectedIndex]);

setState是一个异步函数。请参阅:@Vivere no,
setState
不是异步函数。状态更新可以成批进行,因此在调用
setState
后,状态不会立即更改。setter是一个普通函数,它不会生成承诺——所有事情都发生在同一个调用堆栈上。当React控制了用户定义的代码时,例如在React管理的click事件上,React调用所有用户定义的单击处理程序,以便它知道所有这些处理程序何时完成,并可以在最后一次执行所有状态更新,而不是在每次setter调用后触发状态更改和渲染。setState是一个异步函数。请参阅:@Vivere no,
setState
不是异步函数。状态更新可以成批进行,因此在调用
setState
后,状态不会立即更改。setter是一个普通函数,它不会生成承诺——所有事情都发生在同一个调用堆栈上。当React控制用户定义的代码时,例如在React管理的单击事件上,React会调用所有用户定义的单击处理程序,以便它知道所有这些处理程序何时完成,并且可以在最后一次执行所有状态更新,而不是在每次setter调用后触发状态更改和渲染。