[英]React Js material UI not updating the value when set
所以我在 material UI react js 中有这段代码,它没有正确更新值,所以我想,为了进一步解释,我有这段代码
import * as React from 'react';
import Tabs from '@mui/material/Tabs';
import Tab from '@mui/material/Tab';
export function Home() {
const [value, setValue] = React.useState('Pending');
const handleChange = (event, newValue) => {
setValue(newValue);
console.log(value);
};
return (
<div>
<>
<Tabs
value={value}
onChange={handleChange}
textColor="secondary"
indicatorColor="secondary"
aria-label="secondary tabs example"
>
<Tab value="Pending" label="Pending" />
<Tab value="Received" label="Received" />
<Tab value="Prepared" label="Prepared" />
<Tab value="Cancelled" label="Cancelled" />
</Tabs>
</>
</div>
);
}
如果我运行此代码并单击带有 label“待处理”的选项卡,则不会触发 console.log。 如果我再次单击带有 label“已接收”的标签,console.log 将显示“待定”而不是“已接收”。
这种情况一直发生,我认为当您设置值和控制台日志时,它应该显示您选择的最新值。
样本 output:
如您所见,我当前选择了“已接收”标签,但在显示屏上显示为“待定”
这是 js/Material UI 的反应方式还是我只是在这里遗漏了什么?
谢谢
正如 Dave Newton 在评论中所说,设置 state 是异步的,如 React 文档中所述: https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous
如果你想console.log
这个值,你可以更新你的处理程序来记录新值
const handleChange = (event, newValue) => {
setValue(newValue);
console.log(newValue);
};
或者您可以在处理程序外部使用useEffect
以在值更改时始终记录value
useEffect(() => {
console.log(value);
}, [value]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.