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

时间:2020-03-08 16:49:52

标签: blazor blazor-server-side prerender

是否有任何方法可以通过OnInitializedAsync生命周期方法来检测Blazor组件中的预渲染?我知道组件工作流将调用OnInitializedAsync两次,第一次是预渲染,第二次是实际渲染。最后,一次调用OnAfterRenderAsync方法进行实际渲染。

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

我检查了以下GitHub问题,但是它没有有效的解决方案。我希望应该在IsPrerendering之类的API中解决该问题。

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

谢谢。

2 个答案:

答案 0 :(得分:3)

没有内置的API,但是您可以使用HTTP上下文对其进行检测。

我将其包装在一个nuget包中

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

答案 1 :(得分:0)

要检测 Blazor 服务器上的预渲染,我建议按照官方 documentation 操作,引用如下:

<块引用>

预呈现其内容的 Blazor 服务器应用调用 OnInitializedAsync 两次:

  • 当组件最初作为页面的一部分静态呈现时。

  • 第二次当浏览器与服务器建立连接时。

<块引用>

要防止 OnInitializedAsync 中的开发人员代码运行两次,请参阅 Stateful reconnection after prerendering section

相关问题