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

Синхронизация между вкладками

Условие

syncAcrossTabs(key, onChange): слушает событие storage и вызывает onChange(newValue) только для нужного ключа, разбирая JSON. Верни отписку.

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

  • реагирует на свой ключ

  • игнорирует чужие ключи

  • удаление ключа даёт null

  • битый JSON не роняет

  • отписка работает

Как подойти

Событие storage - бесплатный канал между вкладками одного происхождения: так синхронизируют выход из аккаунта, тему и корзину. Ключевая особенность: во вкладке-источнике оно не срабатывает, поэтому своё состояние надо обновлять отдельно. Более гибкая альтернатива - BroadcastChannel, её стоит назвать.

Подсказки: 3
  1. Событие storage приходит на window и содержит key, newValue, oldValue.
  2. Оно не срабатывает во вкладке, которая сама записала значение.
  3. newValue === null означает удаление ключа.

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

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