【发布时间】:2021-04-05 11:12:24
【问题描述】:
我有一个 Blazor WASM 项目,该项目具有最初在 OnInitializedAsync() 方法中设置的属性。一切正常,但如果我点击浏览器刷新按钮,我会收到“未设置对象”错误,因为所有属性都已重置,并且当您点击浏览器刷新按钮时 OnInitializedAsync() 似乎没有运行。在这种情况下如何重新初始化属性?有没有我应该使用的方法来代替 OnInitializedAsync()?
谢谢
【问题讨论】:
-
为什么你认为它没有在刷新时被调用?我的似乎是……您可以在其中添加控制台登录以进行检查。
-
你解决过这个问题吗?现在同样的事情正在发生在我身上。到处都有断点并将所有内容都注释掉,所以它只是一个简单的剃须刀页面......并且仍然没有在页面的硬重新加载时调用任何生命周期方法。
-
OnInitializedAsync() 显然只在首次初始化时调用,而不是在刷新时调用。经过一番调查,SetParametersAsync() 总是被调用,所以这可能是在这些情况下使用的函数,但不确定是否有任何意外情况使用它。
-
我为所有函数添加了控制台写入:OnInitializedAsync、SetParametersAsync、OnParametersSetAsync 和 OnAfterRenderAsync。 SetParametersAsync() 是唯一一个在每次刷新和多次导航时都能可靠运行的函数。
-
我有一个页面 L 用于项目列表和绑定到嵌套路由的 LA,例如用于编辑项目的“/items/edit/id-1”。当我刷新浏览器时不会触发页面 LA 的生命周期事件,但是当我从列表 L 导航到 LA 时会触发它们。我就像 o.O wtf 是这样的,我们应该用这些废话来构建 Web 应用程序吗?! :)