Blazor和浏览器页面刷新

Blazor和浏览器页面刷新,blazor,blazor-webassembly,Blazor,Blazor Webassembly,我有一个Blazor WASM项目,它的属性最初是在OnInitializedAsync()方法中设置的。一切正常,但如果我点击浏览器刷新按钮,会出现“对象未设置”错误,因为当您点击浏览器刷新按钮时,所有属性都已重置,并且OnInitializedAsync()似乎未运行。在这种情况下,如何重新初始化属性?是否有一种方法可以代替OnInitializedAsync()使用 谢谢每次刷新浏览器页面或第一次呈现组件时,都会调用OnInitializedAsync()生命周期函数。我遇到了类似的问题,

我有一个Blazor WASM项目,它的属性最初是在OnInitializedAsync()方法中设置的。一切正常,但如果我点击浏览器刷新按钮,会出现“对象未设置”错误,因为当您点击浏览器刷新按钮时,所有属性都已重置,并且OnInitializedAsync()似乎未运行。在这种情况下,如何重新初始化属性?是否有一种方法可以代替OnInitializedAsync()使用


谢谢

每次刷新浏览器页面或第一次呈现组件时,都会调用
OnInitializedAsync()
生命周期函数。

我遇到了类似的问题,并且使用生命周期事件
OnParametersSet{Async}
工作正常

protected override void OnParametersSet()
{
}

由于某些原因,在使用刷新按钮时没有被点击的断点,但我可以通过使用
NavigationManager.NavigateTo(“/mypath/”+id)”来“欺骗”系统而不是通过浏览器刷新,然后我可以调试所有发生的事情

路由的有用链接:


为什么您认为刷新时不会调用它?我的似乎是…你可以在那里添加一个控制台日志来检查。你解决过这个问题吗?同样的事情现在也发生在我身上。到处都有断点,并且注释掉了所有内容,所以这只是一个简单的页面。。。在硬重新加载页面时仍然没有调用任何生命周期方法。OnInitializedAsync()显然只在首次初始化时调用,而在刷新时没有调用。经过一点调查,SetParametersAsync()始终被调用,因此这可能是在这些情况下要使用的函数,尽管不确定是否有任何意外情况使用它。我为所有for函数添加了一个控制台写入:OnInitializedAsync、SetParametersAsync、OnParametersSetAsync和OnAfterRenderAsync。SetParametersAsync()是唯一一个每次刷新和导航次数过多时都能可靠运行的页面。我有一个页面L用于项目列表,而LA绑定到嵌套路由,如“/items/edit/id-1”用于编辑项目。刷新浏览器时不会触发页面LA的生命周期事件,但从列表L导航到LA时会触发页面LA的生命周期事件。我就像o.o wtf是这样的,我们应该用这些废话来构建网络应用吗?!:)问题很清楚地表明,出于某种原因,这种情况不会发生。
protected override async Task OnParametersSetAsync()
{
    await ...
}