.NET 8 Blazor WASM页面切换异常:点击链接需等目标页加载后跳转
.NET 8 Blazor WebAssembly跳转卡顿的原因分析
原生
<a>标签的路由拦截机制:Blazor WebAssembly会拦截指向内部路由的<a>标签点击事件,不会直接跳转至目标页面,而是先预加载目标页面的组件及其依赖资源。如果SignIn页面的初始化逻辑(比如OnInitilizedAsync中的操作)耗时较长,就会导致首页停留在当前状态,直到预加载完成才切换页面。UI线程被阻塞:Blazor WebAssembly运行在浏览器的单线程JS环境中,所有组件初始化、UI更新操作都在该线程执行。如果
SignIn页面的OnInitilizedAsync中包含同步耗时操作(比如复杂计算、同步读取大量数据),或者await的是立即完成的同步任务,会直接占用UI线程,导致首页无法响应,出现卡顿。组件初始化的同步执行逻辑:Blazor处理导航时,会同步执行目标页面组件的初始化生命周期方法(包括
OnInitilizedAsync),这个过程在当前页面的上下文内完成,没有即时的页面切换视觉反馈,因此初始化耗时的情况下,用户会感知到首页卡顿,直到整个导航流程完成。
内容的提问来源于stack exchange,提问作者Christoff Colomb
相关产品推荐
相关产品推荐

