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

Как задать начальную страницу для навигации в приложение? #442

Open
quick6response opened this issue Jan 11, 2025 · 1 comment
Assignees
Labels
enhancement New feature or request question Further information is requested

Comments

@quick6response
Copy link

У меня есть мини-приложение вк в котором навигация определена в виде

export const DEFAULT_VIEWS = {
HOME: 'home',
FEATURE: 'feature',
PROFILE: 'profile',
} as const;

И получается что при холодном старте приложения из списка приложений или любого другого места, где ссылка на приложение указана без пути на страницу, вызывается страница 404.

Как нужно определить стандартную(дефолтную) страницу навигации или как ее установить при инициализации приложения заранее, чтобы не было мерцания экрана?

Для примера, в пакете @itznevikat/router (https://github.com/nikitakoschelenko/router/wiki/1.-Быстрый-старт#настройки) есть такая настройка и панель открывается верно.

Опишу кейс который требуется достичь - все переходы в приложение обрадываются панелью загрузки/авторизации, которая загружает всю информацию в стейт, после успешной авторизации фронт получает исходную строку запуска и перенаправляет пользователя туда куда он хотел попасть в момент перехода.

Буду благодарен за ответ, вижу перспективы в использование этого пакета, но этот момент мешает полностью мигрироваться на нее с прошлого пакета навигации.

@pasha-nikitin-2003
Copy link
Contributor

Добрый вечер, разбил ответ на 2 части:

Определение дефолтной страницы

Обычно для стартовой страницы используется пустой адрес /. И в примере и в документации мы этому подходу следуем.

Если все-таки для стартовой страницы нужен кастомный адрес, а при холодном старте вы попадаете на / и, как следствие, страницу 404, то можно настроить обработку ошибочных путей, чтобы автоматически отображалась стартовая страница. Или можно для стартовой страницы определить несколько адресов, а уже в коде самой страницы делать replace при необходимости.

Также можно через админскую панель сразу задать правильный адрес вашему приложению и к основному URL добавить #/home или #path=%2Fhome в зависимости от типа роутера.

Идею добавления новой настройки initialURL рассмотрим. Пока предлагаем воспользоваться существующим API.

Ваш кейс

Выделил отдельно, потому что не увидел взаимосвязь с первым вопросом. Роутер не рендерит панели, он просто сопоставляет текущий URL с вашей таблицей роутов и через useActiveVkuiLocation передает ID элементов, которые надо сейчас отобразить. То есть форсировано можно вывести любой экран. Если вам нужно загрузить данные, перед тем как впускать пользователя в приложение, просто форсированно возвращайте экран загрузки, пока с сервера не придут данные. После успешной загрузки пользователь автоматически окажется там, где и планировал.

@pasha-nikitin-2003 pasha-nikitin-2003 self-assigned this Jan 11, 2025
@pasha-nikitin-2003 pasha-nikitin-2003 added enhancement New feature or request question Further information is requested labels Jan 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants