autoHideDuration 在使用钩子的 Snackbar 中不起作用[关闭]

Posted

技术标签:

【中文标题】autoHideDuration 在使用钩子的 Snackbar 中不起作用[关闭]【英文标题】:autoHideDuration is not working in Snackbar using hook [closed] 【发布时间】:2019-10-07 00:09:16 【问题描述】:

我在我的 reactjs 项目中的许多地方都使用了 @material-ui 快餐栏;然而,当涉及到 onClose 和 onClick 处理程序时,这会导致代码重复。所以我决定将参数移动到一个钩子上。随后,当我创建钩子并将代码移过来时,autoHideDuration 停止工作。我很好奇为什么?

我尝试将 Snackbar 组件移动到钩子中并使用参数渲染完整的小吃栏,但这也不起作用。

此时我刚刚制作了一个自定义组件,它包含了快餐栏组件和处理程序,并在我的整个项目中导入了自定义组件。尽管如此,我仍然想找到一个解决方案,说明为什么 autoHideDuration 在第一个解决方案中停止工作

我在下面包含了一个错误行为的代码沙箱:

https://codesandbox.io/embed/dreamy-chaplygin-z2jr5nqry3?fontsize=14

预期结果:在 useSnackbar.js 文件中的 autoHideDuration 中设置的定义超时期限后,小吃店应自动关闭

【问题讨论】:

请将相关代码复制到您的 *** 问题中,以便其他人可以提供帮助。如果您的大部分代码都托管在这里,您更有可能得到答案。 【参考方案1】:

handleClose 事件有问题。您正在使用对象破坏 ( event, reason ) 的一个参数,但它必须是两个单独的参数 (event, reason)

这就是您的handleClose 的外观:


const handleClose = (event, reason) => 
    if (reason === "clickaway") 
        return;
    

    setOpen(false);
;

【讨论】:

以上是关于autoHideDuration 在使用钩子的 Snackbar 中不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

组件更新时重置 Snackbar 上的 autoHideDuration 计时器

如何在 Storybook 中使用 NextJS 的 'useRouter()' 钩子

React Hooks 不适用于 Firebase Cloud Functions 错误:不变违规:无效的钩子调用

使用 React 钩子 useContext 避免不必要的重新渲染

在 NextJs s-s-r 中操作 DOM onClick

WordPress 钩子中的匿名函数