正常官方案例里面,点一下按钮页面能实现数据+1的功能
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
后面我把currentCount++;放到一个异步方法后发现页面的显示不同步了
private async Task<QueryData<Foo>> OnQueryAsync(QueryPageOptions options)
{
await Task.Delay(200);
//这里重新赋值后,页面数据不显示
currentCount = options.PageItems;
//....do someth
return new QueryData<Foo>()
{
Items = items,
TotalCount = count
};
}
后面查资料发现,对于async这种异步方法,需要手动调用StateHasChanged(),告诉前台Blazor的状态已经改变,前台才会自动更新值。
非async异步方法,系统默认调用了StateHasChanged()方法。
改成下面的就可以了
private async Task<QueryData<Foo>> OnQueryAsync(QueryPageOptions options)
{
await Task.Delay(200);
//这里重新赋值后,页面数据不显示
currentCount = options.PageItems;
//异步方法需要主动调用这个方法,告诉前台Blazor的状态已经改变
StateHasChanged();
//....do someth
return new QueryData<Foo>()
{
Items = items,
TotalCount = count
};
}