Blazor 异步获取数据后前台不更新的问题处理

正常官方案例里面,点一下按钮页面能实现数据+1的功能

private int currentCount = 0;
private void IncrementCount()
{
    currentCount++;
}

后面我把currentCount++;放到一个异步方法后发现页面的显示不同步了

private async Task> OnQueryAsync(QueryPageOptions options)
{
                
    await Task.Delay(200);


          
    //这里重新赋值后,页面数据不显示
    currentCount = options.PageItems;


    //....do someth            
    return new QueryData()
    {
        Items = items,
        TotalCount = count
    };
}

后面查资料发现,对于async这种异步方法,需要手动调用StateHasChanged(),告诉前台Blazor的状态已经改变,前台才会自动更新值。

非async异步方法,系统默认调用了StateHasChanged()方法。

改成下面的就可以了

private async Task> OnQueryAsync(QueryPageOptions options)
{
                
    await Task.Delay(200);


          
    //这里重新赋值后,页面数据不显示
    currentCount = options.PageItems;

    //异步方法需要主动调用这个方法,告诉前台Blazor的状态已经改变
    StateHasChanged();


    //....do someth            
    return new QueryData()
    {
        Items = items,
        TotalCount = count
    };
}

你可能感兴趣的:(C#,Blazor,java,前端,javascript,c#,blazor)