Ana içeriğe geç

Aksiyonlar ve Hook'lar

Aksiyon bileşenleri (Button, IconButton, FAB, Card.onTap, ForEach.template.onTap …) bir kullanıcı etkileşimini host uygulamasına ileten action taşır. Bu sayfa action modelinin tam yapısını, command URN kullanımını ve preHooks/postHooks pipeline'ının davranış kurallarını anlatır.


Action: Kısa ve Genişletilmiş Form

Bir aksiyon iki şekilde yazılabilir:

Kısa form (string) — yalnızca verb iletilir:

{ "type": "Button", "label": { "tr": "İptal" }, "action": "cancel" }

Genişletilmiş form (object) — command, validation ve hook'lar eklenebilir:

{
"type": "Button",
"label": { "tr": "Kaydet", "en": "Save" },
"action": {
"action": "dispatch",
"command": "urn:vnext:flow:transition:demo:sample-flow:${param}:save",
"validate": true,
"preHooks": [{ "action": "audit", "command": "urn:client:audit:click", "sync": true }],
"postHooks": [{ "action": "telemetry", "command": "urn:client:telemetry:click" }]
}
}
AlanTipAçıklama
actionstringVerb — aşağıdaki tabloya bakın
commandstring (URN)İşlemi özelleştiren URN. Bkz. URN Kataloğu
validatebooleanAksiyon öncesi form validasyonu yapılacağını işaretler (aşağıda)
preHooksarrayAna aksiyon öncesi çalışan hook'lar
postHooksarrayAna aksiyon sonrası çalışan hook'lar

Verb'ler

VerbHost'a gider mi?Açıklama
submitEvetFormu gönderir ve command'daki transition'ı tetikler. Varsayılan olarak valide eder.
dispatchEvetGenel amaçlı aksiyon gönderimi; command URN'i ile özelleştirilir. Validasyon opsiyoneldir (validate).
selectHayırYerel seçim (ör. ForEach içinde bind güncelleme). Host'a gitmez.
resetEvetSıfırlama aksiyonu; host'a gider.
delegateEvetDelege aksiyonlar; arka planda submit ve reset kullanır.

command değeri her zaman bir URN'dir ve urn:vnext (runtime tarafından çözülür) veya urn:client (client'ın local davranışı) prefiksini taşır. Format ve binding kuralları için bkz. URN Kataloğu ve Binding.


validate

validate, aksiyon tetiklenmeden önce formun validasyondan geçirileceğini işaretler:

  • submit → varsayılan olarak valide eder (validate yazılmasa da).
  • dispatch → validasyon seçeneği sunar; validate: true verilmedikçe valide etmez.

Validasyon başarısız olursa hiçbir aksiyon ve hiçbir hook tetiklenmez; hatalı alanlar işaretlenir.


preHooks ve postHooks

Hook'lar, ana aksiyonun çevresinde audit, telemetry gibi yan etkileri çalıştırmak için kullanılır. Her hook bir aksiyon nesnesidir:

AlanTipAçıklama
actionstringHook verb'i (ör. audit, telemetry)
commandstring (URN)Hook'un çalıştıracağı URN
syncbooleantrue ise senkron (sonucu ana akışı etkileyebilir); false/yazılmazsa asenkron
Reserved verb'ler hook olamaz

submit, select, reset gibi rezerve verb'ler hook olarak reddedilir (warn log yazılır). Hook'lar yalnızca yan etki aksiyonları içindir.


Davranış Kuralları

preHooks/postHooks pipeline'ı aşağıdaki kurallarla çalışır:

DurumDavranış
Sync pre-hook rejectAna aksiyon ve post-hook'lar atlanır + error log
Sync post-hook rejectError log + kalan post-hook'lara devam edilir
Async hook rejectWarn log; ana akış bloklanmaz
Validation failHiçbir hook tetiklenmez
select verbHook'lar skip edilir (host'a hiç gitmez)
reset verbHook'lar çalıştırılır (host'a gider)
Reserved verb hookReddedilir + warn log
Pipeline hatasıPipeline asla throw etmez — last-ditch try/catch + error log

İlgili