DOM и React Middle DOM на практике обновлено
Синхронизация между вкладками
Условие
syncAcrossTabs(key, onChange): слушает событие storage и вызывает onChange(newValue) только для нужного ключа, разбирая JSON. Верни отписку.
Что проверяют тесты
реагирует на свой ключ
игнорирует чужие ключи
удаление ключа даёт null
битый JSON не роняет
отписка работает
Как подойти
Событие storage - бесплатный канал между вкладками одного происхождения: так синхронизируют выход из аккаунта, тему и корзину. Ключевая особенность: во вкладке-источнике оно не срабатывает, поэтому своё состояние надо обновлять отдельно. Более гибкая альтернатива - BroadcastChannel, её стоит назвать.
Подсказки: 3
- Событие storage приходит на window и содержит key, newValue, oldValue.
- Оно не срабатывает во вкладке, которая сама записала значение.
- newValue === null означает удаление ключа.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.