https://itnext.io/sharing-stateful-logic-in-react-with-hooks-a-better-way-to-build-reusable-components-f764d185e38f