Blazor 8 InteractiveServer预渲染:OnInitializedAsync调用时机疑问
Blazor 8 InteractiveServer 预渲染相关疑问解答
问题1:OnInitializedAsync()调用两次的场景范围
- 你当前全局配置的是带预渲染的InteractiveServer模式,这种模式下组件实例会在预渲染和交互式连接阶段复用,因此
OnInitializedAsync()只会执行一次,不会出现两次调用的情况。 OnInitializedAsync()被调用两次的情况,确实仅发生在SSR(静态服务器渲染)+ 流式渲染/后续切换到InteractiveServer模式的场景:比如给组件单独设置@rendermode="new InteractiveServerRenderMode(prerender: false)"但页面本身是SSR渲染,或者混合使用SSR与InteractiveServer且未实现实例复用的场景。这类场景下会先在SSR阶段创建组件实例执行一次生命周期,交互式连接建立后再创建新实例重复执行初始化逻辑。
问题2:Blazor 8早期候选版本的情况
在Blazor 8的早期Preview版本(如Preview 1至Preview 3)中,确实存在InteractiveServer预渲染模式下OnInitializedAsync()被调用两次的Bug。该问题源于当时预渲染与交互式连接阶段的实例复用逻辑不完善,导致SignalR连接建立后重新创建了组件实例,重复触发初始化方法。后续的Preview版本(如Preview 4及之后)以及正式版已修复此Bug,正式版中不会出现该问题。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

