This implementation uses the excellent Recompose helper library, which lets us add state handling on top of stateless functional components.