DOM и React Senior DOM на практике обновлено

Адрес как состояние

Условие

readFilters(search) читает фильтры из строки запроса: { q: string, page: number, tags: string[] }. writeFilters(filters) собирает обратно, опуская пустые значения. page по умолчанию 1.

Что проверяют тесты

  • читает

  • значения по умолчанию

  • мусор в page не ломает

  • собирает обратно

  • пустые значения опускаются

  • туда и обратно

Как подойти

Адресная строка как единственный источник правды для фильтров: ссылку можно отправить, состояние переживает перезагрузку, работают кнопки назад и вперёд. Два правила: читать защищённо (в адрес может прийти что угодно от пользователя) и не писать значения по умолчанию. Пара к этому - history.pushState для новых состояний и replaceState для уточнений вроде ввода в поиске.

Подсказки: 3
  1. getAll возвращает все значения повторяющегося параметра.
  2. Значения по умолчанию в адрес не пишутся - так ссылка остаётся короткой.
  3. Number('абв') даёт NaN, Number('') даёт ноль.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.