{"id":74338,"date":"2024-08-22T11:16:52","date_gmt":"2024-08-22T07:46:52","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/"},"modified":"2024-08-22T11:16:52","modified_gmt":"2024-08-22T07:46:52","slug":"react-monitor-multiple-loading-status-on-the-same-page-2h8","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/","title":{"rendered":"\u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f | \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0645\u0642\u062f\u0645\u0647<\/p>\n<p>\u0647\u0646\u06af\u0627\u0645 \u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062f\u0627\u062f\u0647\u060c \u0627\u063a\u0644\u0628 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062a\u0634\u06a9\u0644 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0644\u06cc\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u0646\u062f \u0641\u0631\u0648\u0634 \u0645\u0627\u0647\u0627\u0646\u0647\u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0648 \u0645\u0648\u062c\u0648\u062f\u06cc \u0646\u0642\u062f\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u062c\u0632\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0686\u0646\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u06cc\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc &#8220;\u0628\u0627\u0631\u06af\u06cc\u0631\u06cc&#8221; \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0634\u0648\u0646\u062f&#8230; \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646.<\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0645\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0627\u0632 Context API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>  \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0641\u06a9\u0631<\/p>\n<p>\u0627\u06af\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0641\u0642\u0637 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u062e\u0627\u0635\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0638\u0627\u0647\u0631\u0627\u064b \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0636\u0639\u06cc\u062a \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u0635\u0641\u062d\u0627\u062a \u062d\u0644 \u06a9\u0631\u062f.<br \/>\n\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u062c\u0632\u0627\u06cc \u062d\u0627\u0648\u06cc \u062a\u0648\u0627\u0628\u0639 \u0648\u0627\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f\u0627\u064b \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0631 \u0635\u0641\u062d\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u067e\u06cc\u0634\u0631\u0641\u062a \u0648\u0627\u06a9\u0634\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0648 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f.<\/p>\n<p>  \u0631\u0627\u0647 \u062d\u0644<\/p>\n<p>  \u0645\u0641\u0647\u0648\u0645<\/p>\n<p>\u0627\u0632 Context API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062d\u0627\u0644\u062a\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062a\u0627 \u0632\u0645\u0627\u0646 \u062a\u06a9\u0645\u06cc\u0644 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f \u0648 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0628\u067e\u06cc\u0686\u062f.<br \/>\n\u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0627\u0633\u062a: \u0644\u0627\u06cc\u0647 LAYOUT \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0631 \u0644\u0627\u06cc\u0647 COMPONENT \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Context API \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc \u06a9\u0646\u062f. \u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0647\u0627 \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u062e\u0627\u0635\u06cc \u0628\u0647 \u0644\u0627\u06cc\u0647 PAGE \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0647\u06cc\u0686 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0627\u0635 \u0635\u0641\u062d\u0647 \u0645\u0627\u0646\u0646\u062f &#8220;\u0635\u0641\u062d\u0647 X \u062f\u0627\u0631\u0627\u06cc \u062a\u0639\u062f\u0627\u062f Y \u0627\u0632 \u062a\u0648\u0627\u0628\u0639 \u0648\u0627\u06a9\u0634\u06cc \u0627\u0633\u062a&#8221; \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>APP&gt;<br \/>\n   LAYOUT&gt;<br \/>\n       PAGE&gt;<br \/>\n          COMPONENT&gt;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Context API (\u06af\u0627\u0645\u200c\u0647\u0627\u06cc 1-3 \u0632\u06cc\u0631)\u060c \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 startLoading \u0648 stopLoading \u0631\u0627 \u062f\u0631 \u062a\u0648\u0627\u0628\u0639 fetch \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0636\u0627\u0641\u06cc\u060c \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0645\u0642\u06cc\u0627\u0633 \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0648 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>  \u0645\u0631\u062d\u0644\u0647<\/p>\n<p>#1. API \u0645\u062a\u0646\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0645\u0627\u0631\u0634 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0647\u0627\u060c \u0645\u062a\u063a\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0648 \u062d\u0627\u0644\u062a \u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\/\/ Create the context<br \/>\nconst LoadingContext = createContext();<\/p>\n<p>\/\/ Create a provider component<br \/>\nexport const LoadingProvider = ({ children }) =&gt; {<br \/>\n  const [loading, setLoading] = useState(true);<br \/>\n  const [loadingCount, setLoadingCount] = useState(0)<br \/>\n  &#8230;}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0633\u067e\u0633\u060c \u0686\u0646\u062f \u062a\u0648\u0627\u0628\u0639 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0634\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>&#8230;<br \/>\n  const startLoading = useCallback(() =&gt; {<br \/>\n    setLoadingCount((count) =&gt; count + 1);<br \/>\n  }, []);<\/p>\n<p>  const stopLoading = useCallback(() =&gt; {<br \/>\n    setLoadingCount((count) =&gt; count &#8211; 1);<br \/>\n  }, []);<\/p>\n<p>  useEffect(() =&gt; {<br \/>\n    setLoading(loadingCount &gt; 0); \/\/ if all the loadings is completed (loadingCount=0), &#8216;loading&#8217; gets false.<br \/>\n  }, [loadingCount]);<br \/>\n  &#8230;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f \u0648 \u062d\u0627\u0644\u062a \u0647\u0627 \u0648 \u062a\u0648\u0627\u0628\u0639 \u0631\u0627 \u067e\u0627\u0633 \u06a9\u0646\u06cc\u062f<\/p>\n<p>&#8230;<br \/>\n const value = useMemo(<br \/>\n    () =&gt; ({loading, startLoading, stopLoading,}),<br \/>\n    [loading, startLoading, stopLoading]);<\/p>\n<p>  return (<br \/>\n    LoadingContext.Provider value={value}&gt;{children}LoadingContext.Provider&gt;<br \/>\n  );};<\/p>\n<p>\/\/ Custom hook to use the LoadingContext<br \/>\nexport const useLoading = () =&gt; useContext(LoadingContext);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>#2. \u062f\u0631 App.jsx\u060c \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0635\u0641\u062d\u0647 \u062e\u0627\u0635 \u0631\u0627 \u0628\u067e\u06cc\u0686\u06cc\u062f<\/p>\n<p>const App = ()=&gt;{<br \/>\n    return (<br \/>\n    LoadingProvider&gt;<br \/>\n        Layout&gt;<br \/>\n            Main\/&gt; \/\/ example<br \/>\n            Sub\/&gt; \/\/ example<br \/>\n        Layout&gt;<br \/>\n    LoadingProvider&gt;<br \/>\n    )<br \/>\n}<\/p>\n<p>const Main = ()=&gt;{<br \/>\n    return(<\/p>\n<p>        ChartComponent type=&#8221;A&#8221;&gt;<br \/>\n        ChartComponent type=&#8221;B&#8221;&gt;<br \/>\n        ChartComponent type=&#8221;C&#8221;&gt;<br \/>\n    &gt;<br \/>\n    )<br \/>\n}<\/p>\n<p>const Sub =()=&gt;{<br \/>\nreturn(<\/p>\n<p>        ChartComponent type=&#8221;A&#8221;&gt;<br \/>\n        ChartComponent type=&#8221;C&#8221;&gt;<br \/>\n    &gt;<br \/>\n    )<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>#3. \u0627\u0641\u06a9\u062a UI \u0631\u0627 \u062f\u0631 Layout.jsx \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<p>import { useLoading } from &#8220;YOUR FILE PATH&#8221;;<\/p>\n<p>const Layout = ({children}) =&gt; {<br \/>\n    const { loading } = useLoading();<br \/>\n    const [showLoadingScreen, setShowLoadingScreen] = useState(true);<br \/>\n  const handleCloseLoadingScreen = () =&gt; {<br \/>\n    setShowLoadingScreen(false);<br \/>\n  };<br \/>\n    return (<\/p>\n<p>             {loading &amp;&amp; showLoadingScreen &amp;&amp; (<br \/>\n        LoadingScreen onClose={handleCloseLoadingScreen} \/&gt;)}<br \/>\n        &gt;<br \/>\n    )<br \/>\n}<\/p>\n<p>const LoadingScreen = ({onClose})=&gt;{<br \/>\n   {\/* FOR ESC KEYDOWN *\/}<br \/>\n      useEffect(() =&gt; {<br \/>\n    const handleEsc = (event) =&gt; {<br \/>\n      if (event.key === &#8220;Escape&#8221;) {<br \/>\n        onClose();<br \/>\n    }};<br \/>\n    window.addEventListener(&#8220;keydown&#8221;, handleEsc);<br \/>\n    return () =&gt; {<br \/>\n      window.removeEventListener(&#8220;keydown&#8221;, handleEsc);<br \/>\n    };}, [onClose]);<\/p>\n<p>  return(<\/p>\n<p>      {\/* ADD LOADING DISPLAY *\/}<br \/>\n      &gt;<br \/>\n  )<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>#4. \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP GET \u062f\u0631 \u0622\u0646 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f<\/p>\n<p>&#8230;<br \/>\nimport { useLoading } from &#8220;YOUR FILE PATH&#8221;;<\/p>\n<p>const ChartComponent =({type})=&gt;{<br \/>\n     const { startLoading, stopLoading } = useLoading();<\/p>\n<p>     useEffect(() =&gt; {<br \/>\n    startLoading();<br \/>\n  \/\/&#8230;<br \/>\n    \/\/YOUR FETCH FUNCTION<br \/>\n    \/\/&#8230;<br \/>\n        stopLoading();<br \/>\n    }<br \/>\n    ,[startLoading, stopLoading])<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 React 18 \u0627\u0633\u062a \u0648 \u062f\u0631 React 19 \u0627\u0639\u0644\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 context.provider \u062f\u0631 \u0646\u0633\u062e\u0647 \u0622\u06cc\u0646\u062f\u0647 \u0645\u0646\u0633\u0648\u062e \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<div data-article-id=\"1968709\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/#%D9%85%D9%82%D8%AF%D9%85%D9%87\" >\u0645\u0642\u062f\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/#%D9%81%D8%B1%D8%A2%DB%8C%D9%86%D8%AF_%D8%AA%D9%81%DA%A9%D8%B1\" >\u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0641\u06a9\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/#%D8%B1%D8%A7%D9%87_%D8%AD%D9%84\" >\u0631\u0627\u0647 \u062d\u0644<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/#%D9%85%D9%81%D9%87%D9%88%D9%85\" >\u0645\u0641\u0647\u0648\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/react-monitor-multiple-loading-status-on-the-same-page-2h8\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87\" >\u0645\u0631\u062d\u0644\u0647<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0646\u06af\u0627\u0645 \u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062f\u0627\u062f\u0647\u060c \u0627\u063a\u0644\u0628 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062a\u0634\u06a9\u0644 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0644\u06cc\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u0646\u062f \u0641\u0631\u0648\u0634 \u0645\u0627\u0647\u0627\u0646\u0647\u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0648 \u0645\u0648\u062c\u0648\u062f\u06cc \u0646\u0642\u062f\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u062c\u0632\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0686\u0646\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u06cc\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc &#8220;\u0628\u0627\u0631\u06af\u06cc\u0631\u06cc&#8221; \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0634\u0648\u0646\u062f&#8230; \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646.<\/p>\n<p><\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0645\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645 \u06a9\u0647 \u0627\u0632 Context API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D8%B1%D8%A2%DB%8C%D9%86%D8%AF_%D8%AA%D9%81%DA%A9%D8%B1\"><\/span>\n<p>  \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0641\u06a9\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u0627\u06af\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0641\u0642\u0637 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u062e\u0627\u0635\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0638\u0627\u0647\u0631\u0627\u064b \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0636\u0639\u06cc\u062a \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u0635\u0641\u062d\u0627\u062a \u062d\u0644 \u06a9\u0631\u062f.<\/li>\n<li>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u062c\u0632\u0627\u06cc \u062d\u0627\u0648\u06cc \u062a\u0648\u0627\u0628\u0639 \u0648\u0627\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f\u0627\u064b \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0631 \u0635\u0641\u062d\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u067e\u06cc\u0634\u0631\u0641\u062a \u0648\u0627\u06a9\u0634\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0648 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%AD%D9%84\"><\/span>\n<p>  \u0631\u0627\u0647 \u062d\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%81%D9%87%D9%88%D9%85\"><\/span>\n<p>  \u0645\u0641\u0647\u0648\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u0627\u0632 Context API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062d\u0627\u0644\u062a\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062a\u0627 \u0632\u0645\u0627\u0646 \u062a\u06a9\u0645\u06cc\u0644 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u062f \u0648 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0628\u067e\u06cc\u0686\u062f.<\/li>\n<li>\u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0627\u0633\u062a: \u0644\u0627\u06cc\u0647 LAYOUT \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 <strong>\u0647\u0631 \u0644\u0627\u06cc\u0647 COMPONENT \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Context API \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc \u06a9\u0646\u062f.<\/strong> \u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0647\u0627 \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u06cc \u06a9\u0646\u062f. <strong>\u0647\u06cc\u0686 \u0686\u06cc\u0632 \u062e\u0627\u0635\u06cc \u0628\u0647 \u0644\u0627\u06cc\u0647 PAGE \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a<\/strong>\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0647\u06cc\u0686 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0627\u0635 \u0635\u0641\u062d\u0647 \u0645\u0627\u0646\u0646\u062f &#8220;\u0635\u0641\u062d\u0647 X \u062f\u0627\u0631\u0627\u06cc \u062a\u0639\u062f\u0627\u062f Y \u0627\u0632 \u062a\u0648\u0627\u0628\u0639 \u0648\u0627\u06a9\u0634\u06cc \u0627\u0633\u062a&#8221; \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\"><span class=\"nc\">APP<\/span><span class=\"p\">&gt;<\/span>\n   <span class=\"p\"><span class=\"nc\">LAYOUT<\/span><span class=\"p\">&gt;<\/span>\n       <span class=\"p\"><span class=\"nc\">PAGE<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\"><span class=\"nc\">COMPONENT<\/span><span class=\"p\">&gt;<\/span>\n<\/span><\/span><\/span><\/span><\/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<ul>\n<li>\u067e\u0633 \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Context API (\u06af\u0627\u0645\u200c\u0647\u0627\u06cc 1-3 \u0632\u06cc\u0631)\u060c \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 startLoading \u0648 stopLoading \u0631\u0627 \u062f\u0631 \u062a\u0648\u0627\u0628\u0639 fetch \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0636\u0627\u0641\u06cc\u060c <strong>\u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0645\u0642\u06cc\u0627\u0633 \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a<\/strong>. \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0648 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0633\u062a.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>#1. API \u0645\u062a\u0646\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<ul>\n<li>\u0628\u0631\u0627\u06cc \u0634\u0645\u0627\u0631\u0634 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0647\u0627\u060c \u0645\u062a\u063a\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0648 \u062d\u0627\u0644\u062a \u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/ Create the context<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">LoadingContext<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createContext<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ Create a provider component<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">LoadingProvider<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">children<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">loading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setLoading<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">loadingCount<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setLoadingCount<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><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<ul>\n<li>\u0633\u067e\u0633\u060c \u0686\u0646\u062f \u062a\u0648\u0627\u0628\u0639 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0634\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">...<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">startLoading<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useCallback<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">setLoadingCount<\/span><span class=\"p\">((<\/span><span class=\"nx\">count<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[]);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">stopLoading<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useCallback<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">setLoadingCount<\/span><span class=\"p\">((<\/span><span class=\"nx\">count<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">count<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[]);<\/span>\n\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">setLoading<\/span><span class=\"p\">(<\/span><span class=\"nx\">loadingCount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ if all the loadings is completed (loadingCount=0), 'loading' gets false.<\/span>\n  <span class=\"p\">},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">loadingCount<\/span><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<ul>\n<li>\u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f \u0648 \u062d\u0627\u0644\u062a \u0647\u0627 \u0648 \u062a\u0648\u0627\u0628\u0639 \u0631\u0627 \u067e\u0627\u0633 \u06a9\u0646\u06cc\u062f\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">...<\/span>\n <span class=\"kd\">const<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useMemo<\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">({<\/span><span class=\"nx\">loading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">startLoading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">stopLoading<\/span><span class=\"p\">,}),<\/span>\n    <span class=\"p\">[<\/span><span class=\"nx\">loading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">startLoading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">stopLoading<\/span><span class=\"p\">]);<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"><span class=\"nc\">LoadingContext<\/span><span class=\"p\">.<\/span><span class=\"nc\">Provider<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">children<\/span><span class=\"si\">}<\/span><span class=\"p\"\/><span class=\"nc\">LoadingContext<\/span><span class=\"p\">.<\/span><span class=\"nc\">Provider<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);};<\/span>\n\n<span class=\"c1\">\/\/ Custom hook to use the LoadingContext<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">useLoading<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">useContext<\/span><span class=\"p\">(<\/span><span class=\"nx\">LoadingContext<\/span><span class=\"p\">);<\/span>\n<\/span><\/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<p><strong>#2. \u062f\u0631 App.jsx\u060c \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0635\u0641\u062d\u0647 \u062e\u0627\u0635 \u0631\u0627 \u0628\u067e\u06cc\u0686\u06cc\u062f<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">App<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span><span class=\"o\">=&gt;<\/span><span class=\"p\">{<\/span>\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"><span class=\"nc\">LoadingProvider<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nc\">Layout<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\"><span class=\"nc\">Main<\/span><span class=\"p\">\/&gt;<\/span> \/\/ example\n            <span class=\"p\"><span class=\"nc\">Sub<\/span><span class=\"p\">\/&gt;<\/span> \/\/ example\n        <span class=\"p\"\/><span class=\"nc\">Layout<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nc\">LoadingProvider<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">Main<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span><span class=\"o\">=&gt;<\/span><span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"\/>\n        <span class=\"p\"><span class=\"nc\">ChartComponent<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"A\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nc\">ChartComponent<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"B\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nc\">ChartComponent<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"C\"<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n    )\n}\n\nconst Sub =()=&gt;<span class=\"si\">{<\/span>\n<span class=\"k\">return<\/span><span class=\"p\">(<\/span>\n    <span class=\"p\"\/>\n        <span class=\"p\"><span class=\"nc\">ChartComponent<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"A\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\"><span class=\"nc\">ChartComponent<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"C\"<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n    )\n}\n<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/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<p><strong>#3. \u0627\u0641\u06a9\u062a UI \u0631\u0627 \u062f\u0631 Layout.jsx \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useLoading<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">YOUR FILE PATH<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">Layout<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span><span class=\"nx\">children<\/span><span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">loading<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useLoading<\/span><span class=\"p\">();<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">showLoadingScreen<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setShowLoadingScreen<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useState<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleCloseLoadingScreen<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">setShowLoadingScreen<\/span><span class=\"p\">(<\/span><span class=\"kc\">false<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n    <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n        <span class=\"p\"\/>\n             <span class=\"si\">{<\/span><span class=\"nx\">loading<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">showLoadingScreen<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">(<\/span>\n        <span class=\"p\"><span class=\"nc\">LoadingScreen<\/span> <span class=\"na\">onClose<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleCloseLoadingScreen<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;)<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">&gt;<\/span>\n    <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">LoadingScreen<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span><span class=\"nx\">onClose<\/span><span class=\"p\">})<\/span><span class=\"o\">=&gt;<\/span><span class=\"p\">{<\/span>\n   <span class=\"p\">{<\/span><span class=\"cm\">\/* FOR ESC KEYDOWN *\/<\/span><span class=\"p\">}<\/span>\n      <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">handleEsc<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">key<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Escape<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nf\">onClose<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}};<\/span>\n    <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">keydown<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">handleEsc<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">removeEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">keydown<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">handleEsc<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">};},<\/span> <span class=\"p\">[<\/span><span class=\"nx\">onClose<\/span><span class=\"p\">]);<\/span>\n\n  <span class=\"k\">return<\/span><span class=\"p\">(<\/span>\n      <span class=\"p\"\/>\n      <span class=\"si\">{<\/span><span class=\"cm\">\/* ADD LOADING DISPLAY *\/<\/span><span class=\"si\">}<\/span> \n      <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/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<p><strong>#4. \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP GET \u062f\u0631 \u0622\u0646 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"p\">...<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useLoading<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">YOUR FILE PATH<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">ChartComponent<\/span> <span class=\"o\">=<\/span><span class=\"p\">({<\/span><span class=\"nx\">type<\/span><span class=\"p\">})<\/span><span class=\"o\">=&gt;<\/span><span class=\"p\">{<\/span>\n     <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">startLoading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">stopLoading<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useLoading<\/span><span class=\"p\">();<\/span>\n\n     <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">startLoading<\/span><span class=\"p\">();<\/span>\n  <span class=\"c1\">\/\/...<\/span>\n    <span class=\"c1\">\/\/YOUR FETCH FUNCTION<\/span>\n    <span class=\"c1\">\/\/...<\/span>\n        <span class=\"nf\">stopLoading<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"p\">,[<\/span><span class=\"nx\">startLoading<\/span><span class=\"p\">,<\/span> <span class=\"nx\">stopLoading<\/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>\n<p><em>\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 React 18 \u0627\u0633\u062a \u0648 \u062f\u0631 React 19 \u0627\u0639\u0644\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 context.provider \u062f\u0631 \u0646\u0633\u062e\u0647 \u0622\u06cc\u0646\u062f\u0647 \u0645\u0646\u0633\u0648\u062e \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/em><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647 \u0647\u0646\u06af\u0627\u0645 \u062a\u0648\u0633\u0639\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062f\u0627\u062f\u0647\u060c \u0627\u063a\u0644\u0628 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062a\u0634\u06a9\u0644 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0644\u06cc\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u0646\u062f \u0641\u0631\u0648\u0634 \u0645\u0627\u0647\u0627\u0646\u0647\u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0648 \u0645\u0648\u062c\u0648\u062f\u06cc \u0646\u0642\u062f\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u062c\u0632\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":74339,"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-74338","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\/74338","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=74338"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/74338\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/74339"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=74338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=74338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=74338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}