import React, { useCallback, useEffect, useState } from 'react'; import logo from './logo.svg'; import './App.css'; function App() { const [message, setMessage] = useState(null); const [isFetching, setIsFetching] = useState(false); const [url, setUrl] = useState('/api'); const fetchData = useCallback(() => { fetch(url) .then(response => { if (!response.ok) { throw new Error(`status ${response.status}`); } return response.json(); }) .then(json => { setMessage(json.message); setIsFetching(false); }).catch(e => { setMessage(`API call failed: ${e}`); setIsFetching(false); }) }, [url]); useEffect(() => { setIsFetching(true); fetchData(); }, [fetchData]); return (
logo { process.env.NODE_ENV === 'production' ?

This is a production build from create-react-app.

:

Edit src/App.js and save to reload.

}

{'« '} {isFetching ? 'Fetching message from API' : message} {' »'}

React + Node deployment on Heroku

Learn React

); } export default App;