WoodyLabBuild with UIMS

Guida · Il comportamento

Lanciare un evento

Il blocco dice cosa è successo, non cosa fare. Chi risponde è un’altra faccenda — e in certi casi non risponde nessuno, di proposito.

Dove siamo

Hai un’azione che naviga. Alla fine di questo capitolo avrai un bottone che non naviga e fa comunque succedere qualcosa, e saprai dove va a finire quello che emette.

Il gesto

Prendi un blocco action con actionType: none.

Nel suo uiState.events aggiungi una riga: trigger su on:click, event con il nome del canale.

Salva, ricarica, clicca.

// un blocco dentro layout di una pagina, in Payload
{
  "blockType": "action",
  "viewMode": "ButtonFloating",
  "action": { "actionType": "none" },
  "uiState": {
    "events": [ { "trigger": "on:click", "event": "ui:scrollToTop" } ]
  }
}

Cos’è appena successo

Il blocco ha detto una cosa sola: «è stato cliccato, e questo è il nome di ciò che significa». Non sa chi ascolta, non sa se qualcuno ascolta, e non cambia comportamento se nessuno lo fa.

È la stessa separazione che hai già visto due volte — il blocco non sa che aspetto avrà, il figlio non sa dove finirà — applicata al comportamento. Il vantaggio è lo stesso: chi risponde si può cambiare senza toccare chi chiede.

Un evento può anche portare un payload, che è JSON opaco: il motore non lo interpreta, lo consegna. Chi risponde sa che forma ha, perché è la stessa persona che ha scritto l’handler.

Quello che il blocco dichiara

uiState: { events: [{ trigger: 'on:click', event: 'ui:scrollToTop' }] }

Quello che risponde, dal lato progetto

export const mergedHandlers = { ...uimsEventHandlers, ...customHandlers }
// un canale senza handler e legittimo: non fa niente, e non e un errore

Aspettare una risposta

Se l’handler è asincrono e ti serve sapere com’è andata, il campo await fa attendere l’esito, e successEvent ed errorEvent dicono cosa emettere nei due casi.

È il modo in cui una conferma diventa una catena: clic, richiesta, e due strade — senza che il bottone sappia niente di cosa c’è in mezzo.

Quando non funziona

Scrivi un nome di evento inventato. Non succede niente e non c’è nessun errore: nessun handler risponde a quel canale.

Un evento senza risposte è legittimo — il capitolo dopo spiega quando è voluto — quindi il sistema non può distinguerlo da un refuso. Il controllo è tuo.

Avanti

Hai lanciato un evento. Nel capitolo dopo: dove sta scritto quali eventi esistono, e perché non si deducono dagli handler.

Lanciare un evento · WoodyLab