在 Blazor 服务器应用中检测服务器预渲染

Son*_*n04 7 prerender blazor blazor-server-side

OnInitializedAsync有没有办法从生命周期方法中检测 Blazor 组件中是否正在进行预渲染?我知道组件工作流程会调用OnInitializedAsync两次,第一次用于预渲染,第二次用于实际渲染。最后,OnAfterRenderAsync一次性调用该方法进行实际渲染。

但是,我需要检测OnInitializedAsync. 这样我就可以在预渲染中进行一些更改,并在实际渲染中阻止它,反之亦然。

我检查了下面的 GitHub 问题,但没有有效的解决方案。我希望,它应该在像IsPrerendering.

https://github.com/dotnet/aspnetcore/issues/17282

提前致谢。

Mis*_*goo 5

没有内置 API,但您可以使用 HTTP 上下文来检测它。

我已将其包装在 nuget 包中

https://www.nuget.org/packages/PreRenderComponent

更新:

从这次起,情况发生了变化,虽然仍然没有 api 来检测这一点,但您应该只在调用 OnAfterRender/OnAfterRenderAsync 后执行外部调用(例如 JSInterop 和 HTTP 调用)。

如果您坚持这种模式,则无需了解预渲染状态。