{"id":12504,"date":"2023-03-17T05:45:54","date_gmt":"2023-03-17T02:15:54","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/react-toastify-with-custom-cancel-button-in-react-h67\/"},"modified":"2023-03-17T05:45:54","modified_gmt":"2023-03-17T02:15:54","slug":"react-toastify-with-custom-cancel-button-in-react-h67","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/react-toastify-with-custom-cancel-button-in-react-h67\/","title":{"rendered":"\u062a\u0645\u0627\u0633 \u0628\u0627 \u062f\u06a9\u0645\u0647 \u0644\u063a\u0648 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 react-toastify"},"content":{"rendered":"<div data-article-id=\"1403728\" id=\"article-body\">\n<p>\u062f\u0631 \u0632\u0645\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u060c \u0632\u0645\u06cc\u0646\u0647\/\u0627\u0644\u06af\u0648\u06cc \u06a9\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a&#8230; \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0632\u06cc\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627\u0633\u062a&#8230;<\/p>\n<p>\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u0648\u0644\u0641\u0647 \u062f\u06a9\u0645\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 &#8220;react-toastify&#8221;<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">ApiCancelBtn<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/components\/ApiCancelBtn<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">toast<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-toastify<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">Service<\/span> <span class=\"p\">{<\/span>\n    <span class=\"p\">...<\/span>     \n    <span class=\"k\">async<\/span> <span class=\"nx\">handleApiCall<\/span><span class=\"p\">(<\/span><span class=\"nx\">callAI<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"p\">...<\/span>\n        <span class=\"nx\">toast<\/span><span class=\"p\">.<\/span><span class=\"nx\">info<\/span><span class=\"p\">(<\/span><span class=\"s2\">`\ud83d\ude42 We are thinking...`<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n          <span class=\"na\">icon<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n          <span class=\"na\">autoClose<\/span><span class=\"p\">:<\/span> <span class=\"mi\">30000<\/span><span class=\"p\">,<\/span>\n          <span class=\"na\">pauseOnHover<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n          <span class=\"c1\">\/\/ custom button component call...<\/span>\n          <span class=\"na\">closeButton<\/span><span class=\"p\">:<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">ApiCancelBtn<\/span> <span class=\"na\">jobId<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">'<\/span><span class=\"s1\">jobId<\/span><span class=\"dl\">'<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;,<\/span>\n        <span class=\"p\">});<\/span>\n        <span class=\"p\">...<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">api<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/api<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">ApiCancelBtn<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">jobId<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleCancel<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async<\/span> <span class=\"p\">(<\/span><span class=\"nx\">jobId<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nx\">api<\/span><span class=\"p\">.<\/span><span class=\"nx\">cancelJob<\/span><span class=\"p\">(<\/span><span class=\"nx\">jobId<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> \n       <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"toast-custom-cancel-button\"<\/span> \n       <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span><span class=\"o\">=&gt;<\/span> <span class=\"nx\">handleCancel<\/span><span class=\"p\">(<\/span><span class=\"nx\">jobId<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n    <span class=\"p\">&gt;<\/span>\n      Cancel API Call\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">ApiCancelBtn<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0632\u0645\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u060c \u0632\u0645\u06cc\u0646\u0647\/\u0627\u0644\u06af\u0648\u06cc \u06a9\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a&#8230; \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0632\u06cc\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627\u0633\u062a&#8230; \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u0648\u0644\u0641\u0647 \u062f\u06a9\u0645\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 &#8220;react-toastify&#8221; import ApiCancelBtn from &#8216;..\/components\/ApiCancelBtn&#8217;; import { toast } from &#8216;react-toastify&#8217;; export class Service { &#8230; async handleApiCall(callAI) { &#8230; toast.info(`\ud83d\ude42 We are thinking&#8230;`, { icon: false, autoClose: 30000, pauseOnHover: false, &hellip;<\/p>\n","protected":false},"author":2,"featured_media":12505,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-12504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/12504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=12504"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/12504\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/12505"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=12504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=12504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=12504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}