F5 какое событие нужно оформить, при обновлении страницы

Рейтинг: 1Ответов: 1Опубликовано: 10.05.2023

веб приложение блазор использует определенные настройки пользователя.

  1. При навигации между страницами, вся информация сохраняется корректно и пользователь всегда видит инофрмацию, которую он запросил при идентификации (пример: свое имя вверху страницы/данные на самой странице).
  1. Когда же страница обновляется, то все обнуляется и пользователь теряет всю информацию. ПОЧЕМУ? Где искать ответы, как решить вопрос? (главное, что я дебаглю и все вроде на месте)

Прочитала про цикл компонента при обновлении страницы страница входит в некоторые методы. Я на каждой странице в OnInitializedAsync вызываю куки, и даю значения. Прошлась по шагам (F10/F11), переменные глобальные и присваивают необходимое значение, только вот на результат это не влияет, все равно страница пустая.

так же я повторила тоже самое в методах OnAfterRender / OnParametersSetAsync.

Подскажите, кто писал веб приложение сталкивались ли с похожей ситуацией, как решали, возможные примеры ?

***** Есть ли еще какое событие, которое нужно переопределить, если пользователь нажал F5 или просто обновил страницу нажав введите сюда описание изображения

Вот так я присваиваю данные на каждой странице:

protected override async Task OnInitializedAsync()
{
    StaticVariable.UserConnected = await cookie.GetValueAsync<UserConnected>(StaticVariable.NessyWebCookiesLastUser);
    if (StaticVariable.UserConnected != null)
    {
        SessionSettings.name = StaticVariable.UserConnected.UserLast;
        SessionSettings.token = StaticVariable.UserConnected.UserToken;
    }

    if (SessionSettings.token != null)
    {
        StaticVariable.IfUserConnected = true;
    }

    try
    {
        if (StaticVariable.IfUserCheckedMemberMe)
        {
            StaticVariable.GetToken();
            StaticVariable.GetUserName();
        }
    }
    catch (Exception e)
    {
        var msg = e.Message;
        logger.LogWarning("some logs warning");
    }
    StateHasChanged();
}

***говорят ты не так делаешь, а как делать молчат, ну не так все...на маленьких тестовых проектах все просто, но вот когда разростается, тут есть случаи, которые не покажешь на примере

Ответы

▲ 1

Порядок запуска блазор.

Введите сюда описание изображения

Этапы компонента Blazor Компонент Blazor может пройти пять этапов:

SetParameters: этот этап запускается при первоначальном создании компонента (параметры еще не установлены) или всякий раз, когда параметры компонента обновляются из URL-адреса или из родительского компонента. Если SetParametersAsyncметод переопределен, методы OnParametersSetи OnParametersSetAsyncне должны использоваться. Инициализация: это этап, на котором компонент полностью построен и установлены параметры. ParametersSet: как следует из названия, этот этап запускается всякий раз, когда параметры компонента обновляются из URL-адреса или из родительского компонента. AfterRender: срабатывает, когда компонент проходит стадию инициализации или StateHasChangedвызывается. Dispose: это последний шаг, когда компонент удаляется из пользовательского интерфейса. Разработчики должны очистить ресурсы, чтобы предотвратить утечку памяти или неожиданное поведение.

Вот минимальный пример на гитхаб.

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

Вот Метанит говорит как раз https://metanit.com/sharp/blazor/2.10.php о иных событиях, которые можно вызвать при использовании компонентов.

Попробуйте пересмотреть дерево перехода страниц, чтоб понять в какой момент вы теряете "данные пользователя(имя, токен...)".