Event Hooks
The Event Hooks are called just after the execution of Event Handlers.
The lifecycle of all events is:
User Input > Event Handler / Action > Mutate Store > Event Hook.
All Event Hooks takes the current instance (Form or Field) in Input.
Available Event Hooks
Triggered by Event Handlers
| Event Handler | Affected Property | Executed Hook | FORM | FIELD |
|---|---|---|---|---|
| onChange(e) | value | onChange | YES * | YES |
| onToggle(e) | value | onToggle | NO | YES |
| onFocus(e) | focused | onFocus | NO | YES |
| onBlur(e) | touched | onBlur | NO | YES |
| onDrop(e) | files | onDrop | NO | YES |
(*) next pre-release >= 5.1.0
Available Event Hooks w/ Actions
Triggered by Event Handlers
| Event Handler | Executed Action | Affected Property | Executed Hook | FORM | FIELD |
|---|---|---|---|---|---|
| onSubmit(e) | submit() > validate() | submitting, validating | onSubmit | YES | YES |
| onClear(e) | resetValidation() / clear() | value | onClear | YES | YES |
| onReset(e) | resetValidation() / reset() | value | onReset | YES | YES |
| onAdd(e) | add() | fields | onAdd | YES | YES |
| onDel(e) | del() | fields | onDel | YES | YES |
Validation Hooks
We have some alternatives to deal with the Validation Hooks:
Execute code on Instance Init
The onInit hook is executed just after the instance (Form or Field) is created.
| Action | Affected Property | Executed Hook | FORM | FIELD |
|---|---|---|---|---|
| constructor() | ALL | onInit | YES | YES |
new Form({ ... }, {
hooks: {
onInit(form) {
console.log('-> onInit Form HOOK');
},
},
})
VERSION < 1.29
Event Hooks can be used to catch an event when selecting a particular field or nested field.
We can hook these events: validate, update, clear, reset.
The callback will receive:
- The Form Instance
- The Field Instance
- The Field Path
- The Event Name
- The mobx
changeobject
form.$('password').on('validate', ({ form, field, path, event, change }) => { ... });
form.$('password').on('update', ({ form, field, path, event, change }) => { ... });
form.$('password').on('clear', ({ form, field, path, event, change }) => { ... });
form.$('password').on('reset', ({ form, field, path, event, change }) => { ... });
For more info on the mobx
changeobject take a look at the mobx Event Overview Table for theobservemethod.