【发布时间】:2020-11-06 15:57:01
【问题描述】:
我有一个 Blazor 服务器端页面,需要在用户访问该页面时加载数据。但是,OnAfterRenderAsync 执行后不会更新 UI。数据加载正确,如果我创建一个“刷新”按钮来标记它工作的页面。
我有类似的东西:
@page "/mypage
<button class="btn btn-primary" @onclick="Temp">Refresh</button>
@if (_loading)
{
<p>
<em>Loading...</em>
</p>
}
else
{
<p>
<em>Here is your data</em>
</p>
}
@code {
private bool _loading { get; set; }
protected override async Task OnInitializedAsync()
{
_loading = true;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender) return;
//Amazong loading code
_loading = false;
}
private void Temp()
{
_loading = false;
}
}
遍历OnAfterRenderAsync 确实表明_loading 已正确设置为false。单步执行Temp() 确实表明_loading 设置为false。
我猜OnAfterRenderAsync 没有更新 DOM,事实上单击按钮会强制更新 DOM。
【问题讨论】: