Guida · Il contenuto
Richiamare un viewMode da un blocco
Il blocco è il dato. Il viewMode è la forma. Il collegamento fra i due è una stringa, e questo è il punto.
Dove siamo
Hai un viewMode con i suoi slot. Alla fine di questo capitolo avrai un blocco che lo usa, e avrai cambiato l’aspetto di quel blocco senza toccarne una parola.
Il gesto
Apri una pagina nell’admin. Aggiungi un blocco. Nel campo viewMode scegli il tuo.
Salva, ricarica. Poi torna indietro e scegline un altro. Il testo non è cambiato, l’aspetto sì.
// un blocco dentro layout di una pagina, in Payload
{
"blockType": "text",
"viewMode": "CardCompact",
"slot": "content",
"text": "Il contenuto non sa che aspetto avrà."
}Cos’è appena successo
Fra il dato e il disegno c’è un passaggio solo, e avviene sul server: UIMS.resolve(block). Prende il blocco, legge il nome del viewMode, e restituisce un descrittore — sempre della stessa forma: { Component, ui, slots, items, data }.
La separazione dentro quel descrittore è ciò che regge tutto: i dati di dominio stanno in data e in nessun’altra chiave. Per questo un componente può non sapere niente del blocco che l’ha generato, e lo stesso componente può disegnare blocchi diversi.
La conseguenza è la ragione per cui il sistema esiste: la forma è sostituibile senza toccare il dato.
Il passaggio, sul server
const descrittore = await UIMS.resolve(block)
La forma del descrittore, sempre la stessa
{ Component, ui, slots, items, data }
// i dati di dominio stanno in `data` e in nessun'altra chiaveQuando non funziona
Scrivi a mano un viewMode che non esiste. Il blocco non esplode: il resolver non trova la forma e cade sul fallback, e in console compare [UIMS] no ViewMode found for this block: — in inglese, come tutto il codice del pacchetto.
È uno dei pochi punti in cui un errore si vede. Approfittane: se un blocco «esce sbagliato», la console dice se il nome è arrivato.
Avanti
Un blocco, un viewMode. Nel capitolo dopo: tre viewMode e un componente solo.