c# - 如何在剃须刀组件中即时显示信息列表
问题描述
我有一个数据库和一个表中有很多条目。我想使用 blazor 在网页上显示这些条目。
我尝试使用context.tableName.Load()
和加载条目并context.tableName.Local
使用
@foreach(var entry in localList){
<p>@entry.Name</p>
}
这很好..但它首先从数据库加载所有数据,当它最终完成时,它开始呈现页面/结果。
我想显示已立即加载的结果,随着加载的继续在网页上弹出响应。任何想法我将如何实施?
谢谢!
解决方案
你所描述的与所做的相匹配IAsyncEnumerable<>
。
只是为了好玩,我稍微调整了标准入门应用程序:
在 WeatherForecastService 中:
public async IAsyncEnumerable<WeatherForecast> GetForecastAsync(DateTime startDate)
{
var rng = new Random();
for (int i = 0; i < 77; i++)
{
yield return new WeatherForecast
{
Date = startDate.AddDays(i),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
};
await Task.Delay(100);
}
}
并在 FetchData.razor 页面中:
List<WeatherForecast> forecasts = new List<WeatherForecast>();
protected override async Task OnInitializedAsync()
{
await foreach (var forecast in ForecastService.GetForecastAsync(DateTime.Now))
{
forecasts.Add(forecast);
StateHasChanged();
}
}
请注意,这不是一种非常有效的数据移动方式,但它可能适用于某些场景。