Ala*_*bra 7 .net asp.net-core blazor blazor-webassembly
在 Blazor WASM 独立应用程序中,这很容易,因为有专门的元素:
<div id="app">Loading...</div>
Run Code Online (Sandbox Code Playgroud)
一旦应用程序加载,它就会被替换。
在 .NET 8 上的 Blazor 中,情况则不同。考虑这两页:
@page "/home"
Run Code Online (Sandbox Code Playgroud)
@page "/wasmPage"
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
Run Code Online (Sandbox Code Playgroud)
当从 过渡/home到/wasmPageBlazor 时,会删除 的内容<main>,将其替换为bl-load注释并开始加载必要的文件...
我们没有任何元素可以显示该Loading...消息。
有什么可以订阅的吗?
来源,我发现:
--blazor-load-percentagecss 变量就会出现。我可以想出一个解决方案,检查是否存在等,但我希望有更好的方法。经过讨论后,@MrC aka Shaun Curtis很明显解决方案是存在的 - 使用预渲染页面。基本上仅在服务器上生成页面时放置Loading...(预渲染)。(关于SO的类似问题)。这不包括我的预渲染设置为 false 时的情况。我还是想看看是否有解决方案。
有任何想法吗?
最后想出了一个好的解决办法:
<div class="[&>*:last-child:not(:first-child)]:hidden">
@Body
<div >
Loading...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它隐藏最后一个元素(正在加载...),但仅当它不是第一个元素时才隐藏。
换句话说:显示Loading..., 直到填充@Body。
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |