什么时候页面 "killed"
When are pages "killed"
我是 blazor 的新手,偶然发现了一些奇怪的东西。
如果我在 OnInitializedAsync 覆盖中执行无限 while 循环,它将在导航到另一个页面后保持 运行ning。
此外,如果我来回导航,它将 运行 这些无限 while 循环的倍数。
就好像它在每次导航到页面时都创建一个新实例,但在离开页面时不清除实例。
这怎么可能?
只要用户没有切换页面,推荐的连续 api 请求(用于更新数据)的方法是什么?
或者任何类型的连续任务。
谢谢!
-维克多
您应该使您的组件成为一次性组件,并在 Dispose 方法中从任何事件等中取消任何 运行 Tasks/unsubscribe。
当 Blazor 呈现页面时,它将创建您的组件的一个新实例,并且当您从 "page" 中删除一个组件时(这包括导航到另一个 Component/page),如果组件实现 IDisposable 然后调用 Dispose。
如何实施一项较长的 运行 任务取决于您 - 通常它会进入服务而不是 UI 组件。
我是 blazor 的新手,偶然发现了一些奇怪的东西。 如果我在 OnInitializedAsync 覆盖中执行无限 while 循环,它将在导航到另一个页面后保持 运行ning。
此外,如果我来回导航,它将 运行 这些无限 while 循环的倍数。 就好像它在每次导航到页面时都创建一个新实例,但在离开页面时不清除实例。
这怎么可能? 只要用户没有切换页面,推荐的连续 api 请求(用于更新数据)的方法是什么? 或者任何类型的连续任务。
谢谢! -维克多
您应该使您的组件成为一次性组件,并在 Dispose 方法中从任何事件等中取消任何 运行 Tasks/unsubscribe。
当 Blazor 呈现页面时,它将创建您的组件的一个新实例,并且当您从 "page" 中删除一个组件时(这包括导航到另一个 Component/page),如果组件实现 IDisposable 然后调用 Dispose。
如何实施一项较长的 运行 任务取决于您 - 通常它会进入服务而不是 UI 组件。