Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перезагрузка страницы для Nuxt в VK Mini Apps #591

Open
devrbcn opened this issue Feb 5, 2025 · 9 comments
Open

Comments

@devrbcn
Copy link

devrbcn commented Feb 5, 2025

Здравствуйте!

Я работаю с платформой VK Mini Apps, используя стек Nuxt.js для разработки. В процессе работы с вашим API столкнулся с проблемой: в текущей версии vk-bridge нет метода для перезагрузки страницы.

Хотел бы узнать, есть ли у вас решение для перезагрузки страницы (например, через метод VKWebAppReload или аналогичный), или возможно ли добавить такую функциональность в будущих обновлениях?

Буду признателен за разъяснения и предложенные решения.
Заранее спасибо за помощь!

@7lexik0n
Copy link
Contributor

7lexik0n commented Feb 5, 2025

Здравствуйте! Подскажите, в каких кейсах вам необходима подобная функциональность?
Методов, подобных VKWebAppReload, сейчас нет. Чтобы продумать реализацию, необходимо определиться с тем, насколько подобная функциональность необходима.

@devrbcn
Copy link
Author

devrbcn commented Feb 5, 2025

В проекте реализовано переключение языка с помощью обновления страницы.
Вероятно стоит обратить внимание на метод VKWebAppUpdateConfig?

@7lexik0n
Copy link
Contributor

7lexik0n commented Feb 6, 2025

В проекте реализовано переключение языка с помощью обновления страницы. Вероятно стоит обратить внимание на метод VKWebAppUpdateConfig?

Раскройте , пожалуйста, полнее, чтобы не было недопониманий: вы переключаете язык для самого приложения (не платформы вконтакте) и хотите перезагружать именно приложение? Нужна ли перезагрузка данных (параметров запуска)?

@devrbcn
Copy link
Author

devrbcn commented Feb 6, 2025

Переключение языка реализовано с помощью пакета @nuxtjs/i18n.

Можно было бы реактивно переключать язык без обновления страницы таким образом:
const { $i18n } = useNuxtApp(); $i18n.setLocale(lang);

К сожалению в вк-мини ругается на свойство useNuxtApp, поэтому пока остановился на варианте с перезагрузкой страницы. Желательно перезагрузка только приложения, чтобы пользователь оставался на той же странице. В крайнем случае можно рассмотреть вариант и с полной перезагрузкой.

@7lexik0n
Copy link
Contributor

7lexik0n commented Feb 7, 2025

Переключение языка реализовано с помощью пакета @nuxtjs/i18n.

Можно было бы реактивно переключать язык без обновления страницы таким образом: const { $i18n } = useNuxtApp(); $i18n.setLocale(lang);

К сожалению в вк-мини ругается на свойство useNuxtApp, поэтому пока остановился на варианте с перезагрузкой страницы. Желательно перезагрузка только приложения, чтобы пользователь оставался на той же странице. В крайнем случае можно рассмотреть вариант и с полной перезагрузкой.

Еще уточняющий вопрос, window.location.reload не помогает в вашем кейсе?

@devrbcn
Copy link
Author

devrbcn commented Feb 7, 2025

Нет. Приложение падает с ошибкой: NoSuchKeyapp8112504tx000001837d152904013d6-0067a5d002-4b53c-default4b53c-default-default

@7lexik0n
Copy link
Contributor

Пока что изучаем эту ошибку
Хотелось бы еще узнать про ошибку при использовании useNuxtApp. Получится ли выложить каким-либо образом код с воспроизведением, чтобы не раскрывать код самого приложения?

@devrbcn
Copy link
Author

devrbcn commented Feb 12, 2025

Вот адрес тестового приложения: https://vk.com/app8112504
В исходниках через поиск можете найти строку window.parent.postMessage, я пытался перекинуть событие через фрейм чтобы перезагружать страницу целиком.

Можете включить режим ovverides в консоли, и перезаписать таким образом:

changeLang(e) {
      window.location.reload() // выведет аналогичную ошибку что и с useNuxtApp
      this.lang = e,
      D().platform === "vk" ? window.parent.postMessage("reload", "*") : location.reload()
},

Если нужен конкретно useNuxtApp то мне придется пересобрать проект, чтобы добавить импорт useNuxtApp на страницу, уточните если потребуется.

@7lexik0n
Copy link
Contributor

Добрый день! Извините за долгий ответ, только появилось время протестировать
Заметил, что ошибка возникает при попытке загрузить {app_url}/reutov/, потому что именно такая ссылка находится на момент перезагрузки в location.href. Есть ли возможность воспользоваться window.replace и прокинуть туда {app_url}/index.html?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants