Blazor和浏览器页面刷新



我有一个Blazor WASM项目,它的属性最初是在OnInitializedAsync((方法中设置的。所有操作都很好,但如果我点击浏览器刷新按钮,我会得到"Object not set"错误,因为所有属性都被重置,并且当你点击浏览器刷新键时,OnInitializedAsync((似乎不会运行。在这种情况下,如何重新初始化属性?有没有一个方法应该代替OnInitializedAsync((使用?

感谢

我也遇到了类似的问题,使用生命周期事件OnParametersSet{Async}也起了作用。

protected override void OnParametersSet()
{
}

protected override async Task OnParametersSetAsync()
{
await ...
}

https://learn.microsoft.com/en-us/aspnet/core/blazor/components/lifecycle?view=aspnetcore-5.0#在parameterssetasync 上设置参数后

出于某种原因,在使用刷新按钮时没有被击中,但我可以";技巧";使用CCD_ 2而不是通过浏览器刷新系统,然后我可以调试发生的一切。

路由的有用链接:

https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-5.0

到目前为止,我认为OP和回复之间存在误解/沟通错误。情况如下:

每个Blazor页面或组件都有自己的OnInitializedAsync(以及AfterRenderAsync等(。如果没有显式重写它们,它们将从基类继承它们。

即使在F5刷新之后,每次加载页面时都会调用这些方法。

但我认为误解就在这里:举个例子,你有一个有两条路线的网站。位于"/"路由的Index.razor页面和位于"/MyPage"路由的MyPage.razor页面

如果导航到/mypage,然后按F5键,Index.razor文件的OnInitializedAsync方法将不会被命中。只有MyPage.razor中的一个将是。如果在Index.razor中初始化了其他页面所依赖的重要值,则刷新其中一个页面时会出现问题。

您可以创建一个组件,然后将其从app.razor或_host.razor.级联

组件内部示例

<CascadingValue Value="this">
@ChildContent
</CascadingValue>
@code {
[Parameter]
public RenderFragment ChildContent { get; set; }
protected override void OnInitialized() => Expression.Empty()
}
每次刷新浏览器页面或首次渲染组件时,都会调用OnInitializedAsync()生命周期函数。

相关内容

  • 没有找到相关文章

最新更新