Blazor 渲染内容两次

gre*_*ice 4 c# blazor .net-5

我尝试了不同的方法来防止这种情况发生。

更改为后,render-mode="Server"我能够在第一次加载时阻止渲染两次。

但现在当我刷新页面时,元素数量仍然增加一倍。

这是我所拥有的

<div id="component-wrapper" class="row">
    @if (Items != null)
    {
        @foreach (var item in Items )
        {
            <ItemComponent Item="@item" />
        }
    }
</div>

@code {

    [Inject]
    private IItemService ItemService { get; set; }
    List<ItemViewModel> Items { get; set; }

    protected override async Task OnInitializedAsync()
    {
        Items = await ItemService.GetItemsAsync();
        base.OnInitialized();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了预渲染后的状态重新连接部分,它似乎对我不起作用。

小智 6

对我来说,这个脚本在 _Hosts.cshtml 上重复

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

删除其中之一后问题就解决了。


Nic*_*sky 6

对于 Blazor 服务器,修改_Host.cshtml为我解决了这个问题:

<component type="typeof(App)" render-mode="ServerPrerendered" />
Run Code Online (Sandbox Code Playgroud)

<component type="typeof(App)" render-mode="Server" />
Run Code Online (Sandbox Code Playgroud)