How to Build a Custom Hook That Actually Earns Its Abstraction | DesignDev.io