我有一个snackBar和里面的警报都来自MUI。问题是我想使用一个函数关闭警报,当单击crossIcon时,关闭它。我不知道为什么它不工作,因为我使用的大多数代码从MUI的例子。有什么想法吗?我是新来的React和MUI。
import { useState } from 'react';
import CloseIcon from '@mui/icons-material/Close';
import { Alert, AlertTitle, IconButton, Snackbar, Typography } from '@mui/material';
interface InfoMessageProps {
open: boolean;
}
export const InfoMessage = ({ open }: InfoMessageProps) => {
const [openMessage, setOpenMesage] = useState(false);
// const handleClose = (_event?: Event | React.SyntheticEvent, reason?: string) => {
// if (reason === 'clickaway') {
// return;
// }
// setOpenMesage(false);
// };
const handleCloseMessage = (): void => {
setOpenMesage(false);
console.log(handleCloseMessage);
};
return (
<Snackbar
open={open}
autoHideDuration={4000}
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
onClose={handleCloseMessage}
>
<Alert
sx={{
width: '487px',
height: '104px',
paddingTop: '20px',
paddingLeft: '20px',
backgroundColor: '#FDFDFD',
}}
icon={false}
action={(
<IconButton
aria-label="close"
color="inherit"
size="small"
onClick={handleCloseMessage}
>
<CloseIcon fontSize="inherit" />
</IconButton>
)}
>
<AlertTitle sx={{ paddingRight:'80px' }}>
<Typography variant='headings.h4'>title</Typography>
</AlertTitle>
<Typography variant='captions.default'>Insert message here</Typography>
</Alert>
</Snackbar>
);
};
2条答案
按热度按时间lf5gs5x21#
您的
Snackbar
由于open
属性而打开。您不会在InfoMessage
组件内部更改此状态。您可以从父组件向InfoMessage
传递回调并更新状态。然后您可以在
InfoMessage
组件中使用该回调。o0lyfsai2#