export const HelloApiContext = React.createContext({ values: { name: "" }, }); export function MyHelloApiComponent({ children }) { const [error, setError] = useState(false); const [loading, setLoading] = useState(false); const [serverData, setServerData] = useState({ name: "" }); const loadData = useCallback(() => { setLoading(true); setError(false); fetch("https://brunosabot.dev/api/hello/") .then((result) => result.json()) .then((data) => { setServerData(data); setLoading(false); }) .catch(() => setError(true)); }, []); useEffect(loadData, []); return ( <HelloApiContext.Provider value={{ values: { error, loading, data: serverData } }} > {children} </HelloApiContext.Provider> ); } export function MyRenderingComponent() { const { values } = useContext(HelloApiContext); if (error) return <div>An error has occurred</div>; if (loading) return <div>Loading...</div>; return <div>{values.data.name}</div>; }