gpt4 book ai didi

Blazor UriHelper.NavigateTo 两次调用页面

转载 作者:行者123 更新时间:2023-12-03 15:56:06 25 4
gpt4 key购买 nike

我在预览版 8 中创建了一个新的 Blazor 服务器端应用程序。当我调用 UriHelper.NavigateTo 从 Index.razor 页面转到计数器页面时,计数器页面被调用两次。

在 Index.razor 页面中,我有以下代码:

@code{

protected async override Task OnInitializedAsync()
{
UriHelper.NavigateTo("/counter");
}

}

然后在计数器页面中,我添加了以下带有断点的代码:
protected override void OnInitialized()
{

}

我的期望是当 NavigateTo 在 Index.razor 中调用计数器路由时只调用一次计数器页面

最佳答案

这种行为是因为预渲染功能。请注意,当您在 counter page 上时(加载两次),如果您点击 Home ,只有一个执行被触发:

enter image description here

总结:

启用预渲染时(默认情况下),预渲染页面的 OnInitializedAsync被调用两次 by design .因此,您的重定向语句会执行两次。

测试是我在索引 OnInitializedAsync 上写了这段代码:

@page "/"
@inject IUriHelper UriHelper

<h1>Hello, world!</h1>

Welcome to your new app.

@code{

protected async override Task OnInitializedAsync()
{
System.Console.WriteLine("_* ");
System.Console.WriteLine("_**************************");
System.Console.WriteLine("_***** Pre render ******");
System.Console.WriteLine("_**************************");
System.Console.WriteLine("_ ");
return;
}
}

我使用预渲染和从应用程序(没有预渲染)调用页面。注意到当我强制重新加载(预渲染)时 OnInitializedAsync执行两次:

enter image description here

了解更多 render modes .

关于Blazor UriHelper.NavigateTo 两次调用页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57680784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com