L'hook useState è ottimo per gestire lo stato semplice, ma se ti imbatti in oggetti di stato o transazioni di stato più complessi, che vuoi mantenere gestibili e prevedibili, l'hook useReducer è un ottimo candidato per gestirli.
In questo esempio modifichiamo l'app delle cose da fare todos utilizzando l'hook useReducer.
Prima con un semplice esempio AppHookReducerTodos per dimostrare come è più prevedibile gestire le transazioni di stato rispetto a useState.
L'altro esempio più complesso AppHookReducerNotications dove il reducer viene utilizzato per gestire la modifica di un stato complesso del componente utilizzando transazioni di stato.
Importate il componente del relativo hook in index.js per vederlo in opera.