1 回答
TA贡献1826条经验 获得超6个赞
“设置”操作是异步的。所以当你这样做时:
setHomeSelect(event.target.value);
exchange_change();
当调用第二个方法时,变量homeSelect没有改变。当逻辑完成处理并且组件准备重新渲染时,它将会发生变化。
更重要的是,这不太像 React:
const exchange_change = () => {
if (homeSelect != 'Home' && hedgeSelect != 'Hedge'){
//enable the symbol dropdown
setDisabled(false);
} else {
//disable the select exchanges dropdown
setDisabled(true);
}
}
当您在此处修改状态值时,从概念上讲,您似乎正在尝试修改 UI。不。UI 组件只能响应状态。因此,您可以在“符号”组件中执行此操作,而不是使用该方法:
disabled={homeSelect == 'Home' || hedgeSelect == 'Hedge'}
如果您想将其放入方法中,请将其放入由组件调用的方法中,而不是在重新渲染之前调用。例如:
disabled={() => checkSelects()}
该方法可以是:
const checkSelects = () =>
homeSelect == 'Home' || hedgeSelect == 'Hedge';
但总体而言,请注意此处的操作顺序。UI 事件调用的所有逻辑都会被执行,这些逻辑会将状态更新排队。然后状态就会更新。然后组件重新渲染(如果需要)。不要依赖在该逻辑期间更新的状态。
添加回答
举报