【问题标题】:How do I get snackbar to open more than once?如何让小吃店多次开张?
【发布时间】:2019-08-29 18:12:27
【问题描述】:

我创建了一个简单的代码框来演示该问题。单击该按钮,MUI 快餐栏将打开。关闭小吃店并尝试重新打开它。什么都没有发生。

这可能与我使用钩子的方式有关吗?

https://codesandbox.io/s/magical-ramanujan-vbnbl

更新:这是“固定”代码。它现在使用 React Context 为您提供一个不错的“全局”快餐栏。 https://codesandbox.io/s/recursing-wozniak-2pow0

【问题讨论】:

    标签: reactjs typescript material-ui react-hooks


    【解决方案1】:

    您正在使用两种不同的数据源来控制可见性,并且您在此过程中感到困惑。将它们合并为一个。您有一个处理此逻辑的单击处理程序,因此修改isOpen 使其成为切换(而不是始终设置为true)并将该函数向下传递以在Snacky 中使用。

    // index.tsx
      const onSubmit = async () => {
        setSnackyProps(prev => ({
          message: "now close me and click the button again",
          variant: "error",
          isOpen: !prev.isOpen
        }));
      };
    <Snacky {...snackyProps} onSubmit={onSubmit} /> // highly irrelevant function name. probably want to change it
    
    // snacky.tsx
      {onSubmit} = props
      function handleClose() {
        onSubmit();
      }
    

    https://codesandbox.io/s/condescending-leftpad-pndo3

    【讨论】:

    • 你完全正确,我把自己都搞糊涂了。谢谢安德鲁!
    • @JonStevens 总是乐于提供帮助。祝你的项目好运
    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 2018-09-26
    • 2020-07-25
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2016-09-10
    相关资源
    最近更新 更多