javascript 组件在mui警报中更新前显示一秒钟的先前状态

ddrv8njm  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(128)

我有一个用于用户注册的表单页面,每当我从API中遇到任何错误时,都会在该页面上显示警报,因此我创建了此警报组件

<Snackbar
    open={open}
    autoHideDuration={9000}
    onClose={() => {
      setOpen(false);
    }}
  >
    <Alert
      severity={type}
      onClose={() => {
        setOpen(false);
      }}
    >
      {msg}
    </Alert>
  </Snackbar>

在用户注册表单中,我打开了一个状态,每当用户单击用户创建按钮时,该状态就会变为真

<Button
            variant="contained"
            type="submit"
            id="root"
            sx={{
              width: "25%",
             
            }}
            onClick={()=> setOpen(true)}
          >
            Create
</Button>

我的alert组件也在用户注册表中调用,alert和msg是根据来自数据API响应的帖子设置的

{alert ? <Alert msg={msg} type={type} setOpen={setOpen} open={open} setMsg={setMsg}/> : ""}

但问题是警报弹出窗口总是首先显示先前错误,然后显示实际错误。
我的表单组件中有open、msg和所有状态。

9rnv2umw

9rnv2umw1#

我最近也遇到了这个问题,我做的一个技巧是这样的:

{isOpen && <Snackbar>
   ...
</Snackbar>
}

我的理解是Snackbar没有完全卸载,所以之前的消息仍然存在一小会儿。但这是我所能告诉的。你能试试这个方法并告诉我它是否有效吗?

相关问题