首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式显示Chakra?

如何以编程方式显示Chakra?
EN

Stack Overflow用户
提问于 2019-10-10 00:59:21
回答 2查看 3.4K关注 0票数 2

我正在尝试使用Chakra 脉轮-UI组件库以编程方式展示一个React.js Toast,并且很难让它正常工作。Chakra-UI烤面包文档只展示了如何根据按钮单击显示土司,但我想以编程方式显示它--在AJAX调用之后返回的承诺中。我不确定它是否可行,但是我想要一个可以调用的showToast函数来显示它。

我正在将Chakra集成到一个React.js web应用程序中,并且对React.js和Chakra都相当陌生。

更新

下面是一个CodeSandbox,它展示了我正在努力实现的目标:https://codesandbox.io/embed/upbeat-rhodes-9zkii。我在那里有一个按钮,当它被点击时显示吐司,但我想在TODO所在的setTimeout中显示它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-10 19:23:45

您可以通过使用React的useEffect钩子以编程方式触发吐司。useEffect钩子可以很好地处理任何副作用,例如获取数据或DOM操作。

代码语言:javascript
复制
 const toast = useToast();

  useEffect(() => {
    // Show toast every 5 seconds.
    setInterval(() => {
      toast({
        title: "Current Time.",
        description: `Time ${new Date()}`,
        status: "success",
        duration: 5000,
        isClosable: true
      });
    }, 5000);
  }, []); // Passing in empty array so this will only get called on mount

对于完整的解决方案视图代码沙箱https://codesandbox.io/s/eloquent-knuth-bt5u8?fontsize=14

票数 3
EN

Stack Overflow用户

发布于 2022-02-16 21:57:31

这是我的解决方案,以防有人绊倒在这条线上:

代码语言:javascript
复制
import { useToast } from "@chakra-ui/react";
import { useState, useEffect } from "react";

export function useToastHook() {
  const [state, setState] = useState(undefined);
  const toast = useToast();

  useEffect(() => {
    if (state) {
      const { message, status } = state;

      toast({
        title: status,
        description: message,
        status: status,
        duration: 3000,
        position: "top",
        isClosable: true,
      });
    }
  }, [state, toast]);

  return [state, setState];
}

使用它就是这样做的(您也可以将newToast传递给任何不在.jsx文件中的函数):

代码语言:javascript
复制
import { useToastHook } from "../components/Toast";

const App = () => {
  const [state, newToast] = useToastHook();

  const someThingHappens = (message) => {
    newToast({ message: message, status: "error" });
  };

  return (
    <div>
    ......
   </div>
  );
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58314040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档