Мы используем Pinia. В одном компоненте вызываем синхронный экшн стора с запросом в базу данных, который изменяет состояние. После этого в другом компоненте сразу читаем это состояние, но оно ещё старое. Почему так происходит и как это исправить?

Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.

Короткий ответ

Что ответить на собеседовании

Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.

Подробный разбор

Ответ с пояснениями

Синхронный action не делает сетевой запрос синхронным. Если обновление зависит от ответа, action должен возвращать Promise, а вызывающий код — ждать его.

Измените состояние после await запроса и дождитесь завершения action перед зависимым чтением. Если чтение всё равно устарело, проверьте, не потеряна ли реактивность при деструктуризации стора: для state подходят storeToRefs. NextTick ожидает обновление DOM, но не завершение произвольного запроса к серверу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее