WoodyLabBuild with UIMS

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 chiave

Quando 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.

Richiamare un viewMode da un blocco · WoodyLab