Модуль 10 · Урок 40

Explicit UI state, render cycle і interaction QA

DOM не повинен бути прихованою базою даних. Один explicit state проходить event → normalize/validate → transition → render; QA перевіряє state, DOM, feedback і focus разом.

Single stateTransitionRenderInteraction QA

Predictable render cycle

function addBook(title) {
  state = { ...state, books: [...state.books, { id, title }] };
  render();
}

Derived count/filter labels обчислюються зі state, а не з кількості current DOM nodes. Transition не мутує nested collection випадково. Render відображає empty/ready/error/success state і не краде focus.

Interaction matrix

InitialEmpty feedback і correct focus order.
Valid submitState+DOM+status, input focus.
InvalidNo mutation, error and correction.
Delegated removeCorrect ID, deterministic transition.
RepeatedNo duplicate listener or stale error.
StressKeyboard, long text, zoom, themes.

Status повідомляє результат без надмірних announcements. При rerender зберігайте або осмислено відновлюйте focus; не фокусуйте status після кожної дрібної зміни.

Лабораторна

Завершіть starter, потім заповніть state transitions, focus/keyboard matrix, fixtures та interaction record. Acceptance: no real submit/network/storage, safe text rendering, predictable repeated actions і no unexplained Console errors.

Завантажити DOM interaction lab →

Офіційні джерела

Практична перевірка · урок 40 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що має бути source of truth у lab?
2. Який правильний цикл interaction?
3. Що таке derived view model?