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