【发布时间】:2023-03-20 16:13:02
【问题描述】:
我正在使用 Material UI 中的组件“对话框”。
当我单击按钮关闭对话框(触发handleCLose)时,它不会将状态设置为false。
我在这里读到了类似的问题:OnClick Listeners not working after closing full-screen dialog using react-material-ui
但到目前为止我还没有设法保存它。
const Transition = React.forwardRef(function Transition(props, ref) {
return <Slide direction="up" ref={ref} {...props} />;
});
function Information() {
const [open, setOpen] = React.useState(false);
const handleClickOpen = () => {
setOpen(true);
};
const handleClose = () => {
setOpen(false);
console.log(open)
};
return (
<div onClick={()=>handleClickOpen()}>
Information
<Dialog
open={open}
TransitionComponent={Transition}
keepMounted
onClose={handleClose}
aria-labelledby="alert-dialog-slide-title"
aria-describedby="alert-dialog-slide-description"
>
<DialogTitle id="alert-dialog-slide-title">{"Information"}</DialogTitle>
<DialogContent>
<DialogContentText id="alert-dialog-slide-description">
Blablabla
</DialogContentText>
</DialogContent>
<DialogActions>
<Button onClick={handleClose} color="primary"> // The function is here
Close
</Button>
</DialogActions>
</Dialog>
</div>
);
}
export default Information
【问题讨论】:
-
状态设置器是异步的,因此您可能不会立即通过控制台日志查看更新后的值。如果您将控制台日志移到
return之前,您仍然看不到更新的值吗? -
即使在函数之外,它也告诉我状态尚未更新。我还可以检查它没有更新,因为
Dialog框没有消失
标签: reactjs