Всем привет.
А есть у кого-нибудь понимание, как правильно синхронизировать состояние приложения с адресной строкой браузера? Какие-нибудь best practices?
Я пока пришёл к двум вариантам:
1. При каждом изменении состояния приложения - пишем его в url. В нужном месте слушаем изменения параметров url и реагируем на их изменения.
+ url - единственный источник информации; не надо как-то дополнительно обрабатывать переход назад в истории браузера
- завязываемся на url; на каждое изменение состояния надо сериализовать данные в url, а потом прочитать оттуда; можно попасть в цикл, когда обновление url будет запускать изменение состояния, которое будет обновлять url и т.д.
2. Читаем данные из url один раз - при загрузке страницы и сохраняем в некий сервис. В дальнейшем все изменения пишутся также в этот сервис и он же на каждое изменение сериализует данные в url, чтобы они оставались там актуальными.
+ удобно работать с несколькими источниками изменений с помощью rxjs; не нужно постоянно парсить данные из url параметров
- надо как-то отдельно работать с историей браузера (переход назад, например);
подписываешься на юрл, парсишь, сохраняешь данные в стейт.
подписываешься на стейт, в случае расхождений с юрл меняешь юрл.
работаешь со стейтом, зачем везде парсить то