Загрузка данных о загрузке компонентов - PullRequest
0 голосов
/ 25 февраля 2020

Можно подумать, что это простая задача. Но как я могу вызвать сервисный метод при загрузке компонента без его запуска дважды?

В настоящее время -

protected override async Task OnInitializedAsync()
{
   await Initialize(); 
}

private async Task Initialize()
{
    Video = await _VideoService.GetAsync(Id);
}

В настоящее время это вызывается дважды, что не кажется хорошей идеей для дважды нажмите на базу данных для получения той же информации.

Я пробовал просто указать это ниже, но она выдаст ошибку, прежде чем она будет отображаться каждый раз.

protected override async Task OnAfterRenderAsync(bool firstRender)
{
  if(firstRender)
  { 
    await Initialize();
  }
}

1 Ответ

1 голос
/ 25 февраля 2020

OnInitializedAsync метод жизненного цикла для инициализации компонента выполняется дважды :

  1. Когда компонент предварительно визуализируется статически.
  2. После установления соединения с сервером.

Это специально разработано - проверьте Повторное подключение с сохранением состояния после предварительной визуализации и другие разделы этой статьи, чтобы выяснить, какой безопасный способ загрузки данные в вашем случае. Может быть, это SetParametersAsync или OnParametersSetAsync

...