【问题标题】:Loading data on component load加载组件负载数据
【发布时间】:2020-06-09 14:08:21
【问题描述】:

人们会认为这是一项简单的任务。但是如何在组件加载时调用服务方法而不触发两次呢?

目前 -

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();
  }
}

【问题讨论】:

    标签: c# .net .net-core blazor blazor-server-side


    【解决方案1】:

    OnInitializedAsync初始化组件的生命周期方法被执行两次

    1. 静态预渲染组件时。
    2. 服务器连接建立后。

    这是设计使然 - 请查看 Stateful reconnection after prerendering 和本文的其他部分,以找出在您的情况下加载数据的安全方法。也许是SetParametersAsyncOnParametersSetAsync

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2011-06-24
      • 2014-06-04
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多