【发布时间】:2019-09-11 23:47:22
【问题描述】:
如果消息不为空并显示小吃栏,我已经制作了一个组件来呈现。如果有人点击登录按钮,我已经集成了它,如果有错误,应该由小吃栏提示错误消息。但是当用户单击小吃栏并将其关闭时,如果用户再次单击登录按钮,则小吃栏将无法再次显示。当用户第一次点击登录按钮时效果很好,但其他时候它不会出现。在我的情况下,“文本”是我通过道具发送的错误消息。所以 useEffect 认为 const "text" 不为空,这就是为什么如果用户再次单击登录按钮,快餐栏不会出现。所以我的问题是,如果消息相同,我如何绕过这个,并再次显示小吃店无论消息是什么?
这是我一直在使用的代码:
const NotificationManager = (props) => {
const { text, type } = props
const [open, setOpen] = useState(true)
useEffect(() => {
setOpen(Boolean(text))
}, [Boolean(text)])
const handleClose = () =>{
setOpen(false)
}
console.log(Boolean(text))
return (
<Snackbar
onClick={handleClose}
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
autoHideDuration={3000}
open={open}
snackbarcontentprops={{
'aria-describedby': 'snackbar-message-id'
}}
>
<SnackbarContent
style={Object.assign({
background: styles[type] || styles['success']
})}
message={localize(text)}
/>
</Snackbar>
)
}
export default NotificationManager
【问题讨论】:
标签: javascript reactjs