Как выполнить код после загрузки страницы Blazor - PullRequest
0 голосов
/ 27 марта 2020

Итак, я пытаюсь выполнить метод, когда страница загружена. Метод переопределения OnAfterRender() в моем случае слишком ранний. метод, который я пытаюсь сделать, находится в моем @code{} блоке страницы бритвы.

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

, как запрошенный мой код ниже:

@code {
    private List<string> Printers;

    private List<string> LayoutTypes;

    private void sendPrint()

    private async Task getAvailablePrinters()
    {
        //get layouts
        Layouts = new List<Layout>();
        AvailablePrintersRepository availablePrintersRepository = new AvailablePrintersRepository();
        try
        {
            Layouts = await availablePrintersRepository.getAvailablePrintersAsync();
        }
        catch (Exception e)
        {
            //show message
        }

        //sort printers & layouts
        Printers = new List<string>();
        LayoutTypes = new List<string>();

        foreach (Layout layout in Layouts)
        {
            foreach (string printer in layout.Printers)
            {
                if (!Printers.Contains(printer))
                {
                    Printers.Add(printer);
                }
            }

            if (!LayoutTypes.Contains(layout.Type))
            {
                LayoutTypes.Add(layout.Type);
            }
        }
    }
}

1 Ответ

2 голосов
/ 27 марта 2020

@ AccessDenied Я хочу отправить запрос другому API, чтобы получить данные, которые мне нужно отобразить пользователю. Теперь у меня есть кнопка, чтобы сделать это, но я хочу получить данные после загрузки страницы, чтобы пользователю не приходилось каждый раз нажимать кнопку

-

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

Так что вы считаете, что OnAfterRenderAsyn c и OnAfterRender Вызывается слишком рано в процессе, и поэтому не подходит для вызова Web Api, который вы хотите сделать для извлечения данных, верно?

Вы не правы, они, по моему мнению, слишком поздно для этого предприятия и вы должны использовать метод жизненного цикла OnInitializedAsyn c для выполнения HTTP-запроса. Пожалуйста, посмотрите шаблон VS, как Web Api сделан для заполнения объектов ForeCast на странице FetchData.

Вы должны попробовать код в различных ситуациях, чтобы понять, как работает процесс инициализации, и увидеть, что ваши идеи или восприятия соответствуют неправильно. Поймите это: вы должны получить свои данные до того, как ваша страница будет отображена, а не после того, как она будет отображена. OnAfterRender (Asyn c) может использоваться для выполнения кода, который в противном случае выполнять слишком рано. Чаще всего он используется для инициализации JS объектов.

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...