Podemos utilizar el hook useReducer para agregar una nueva capa de flexibilidad a nuestro componente al aplicar el patrón de diseño state reducer que permitirá al usuario del componente acceder al estado del mismo.
Para lograr esto modificaremos el componente para utilizar useReducer. En este camino nos encontraremos con un bug que podremos resolver al utilizar el hook useCallback para evitar infinitos re-renders del componente.