Supponiamo che tu abbia un'app tic-tac-toe.
- C'è lo stato del gioco che può essere rappresentato da un array di dimensioni 9.
- C'è il tuo "riduttore" che calcola il nuovo stato dal vecchio stato e dalle azioni del giocatore.
- Poi c'è il tuo renderer che aggiorna l'interfaccia utente in base al nuovo stato.
Grande! Nozioni di base sulla programmazione funzionale. Sfortunatamente, qui finisce la maggior parte delle risorse online. Parlano tutti di come scrivere la logica in modo puro, senza effetti collaterali, non mutando dati o riassegnando valori. Quello su cui non si espandono molto è quello che succede dopo:
-
In che modo viene mantenuto il nuovo stato dall'app?
Se contrassegno una cella sulla lavagna "X", l'app prende la mia mossa, calcola il nuovo stato, rende nuovamente la griglia. Ma non posso modificare l'array originale, né posso assegnarlo alla stessa variabile. In che modo l'app mantiene il nuovo stato?
-
In che modo il rendering può essere puro in un'app Web?
Se contrassegno una cella sulla lavagna "X", l'app prende la mia mossa, calcola il nuovo stato, rende nuovamente la griglia. Ma per ri-renderizzare la griglia, starei manipolando il DOM, che sta effettivamente mutando una struttura dati. Come si aggiorna il DOM funzionalmente?
Vengo da uno sfondo di sviluppo web, dove di solito si tratta di aspettare eventi, di modificare i dati e manipolare DOM, raramente in vista di FP. Inoltre, la maggior parte parla di mantenere lo stato nello stack, solitamente in una forma di ricorsione, che non è una cosa nelle app web. Quindi sto attraversando un periodo difficile per comprendere il concetto, specialmente quando i materiali descrivono modelli che non sono applicabili. Suggerimenti per la giusta direzione è apprezzato.