Javascript 是否对event.target.value未正确更新的useState问题作出反应?
我的问题是我的useState得到了错误的号码 例如,当我打印e.target.value时,它输出打印1,但我选择的索引给我2 或者当我得到0个selectedIndex时,检索1个类似的东西。你知道为什么会这样吗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
<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调用后触发状态更改和渲染。