This is the Podcaster APP implemented using ReactJS and it's (nowadays) new Hooks API.
There's a Custom Hook (userExternalData) which aims to ease with page components that need to load external data.
Also, there are this same concept implemented with an HOC and a render prop component to clearly compare each approach:
- /src/components/home-page.js
- /src/components/home-page-hoc.js
- /src/components/home-page-render-prop.js