OnAfterRenderAsync 未触发

Lui*_*ins 8 blazor

我试图找出为什么我无法在 Blazor 中获取 OnAfterRenderAsync 方法。

在尝试了多种选项并查看 Microsoft 文档后,我似乎找不到解决方案,我确信我错过了一些东西,但我无法弄清楚问题是什么。

在下面的代码中,OnInit 函数被调用,但渲染函数没有被调用。


<h1>OnInit & OnInitAsync Demo</h1>

@foreach (var item in EventType)
{
    @item
    <hr />
}

@code{
    List<string> EventType = new List<string>();

    protected override void OnInitialized()
    {
        EventType.Add("Initilaized");
    }

    protected override void OnAfterRender(bool firstRender)
    {
        EventType.Add("OnAfterRender is called");
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        EventType.Add("OnAfterRenderAsync is called");
        await Task.Delay(1000);
    }
}


Run Code Online (Sandbox Code Playgroud)

这是我的 .csproj 文件


<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>


Run Code Online (Sandbox Code Playgroud)

这是我的 _Host.cshtml


<app>
     <component type="typeof(App)" render-mode="ServerPrerendered" />
</app>

Run Code Online (Sandbox Code Playgroud)

我也尝试过这种方式


@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))


Run Code Online (Sandbox Code Playgroud)

为什么事件没有被触发?

小智 4

尝试将以下行添加到 _Host.cshtml 中正文(而不是头部)的末尾:

<script src="_framework/blazor.server.js"></script>
Run Code Online (Sandbox Code Playgroud)