在Blazor中,foreach循环在调用OnInitializedAsync方法后不会自动渲染元素。这是因为在OnInitializedAsync方法中,Blazor组件还没有完成首次渲染。如果需要在OnInitializedAsync方法中渲染元素,可以使用StateHasChanged方法手动触发重新渲染。以下是一个解决方法的示例代码:
@page "/example"
Blazor foreach 示例
元素数量:@items.Count
@foreach (var item in items)
{
@item
}
@code {
private List items;
protected override async Task OnInitializedAsync()
{
items = new List();
// 模拟异步加载数据
await Task.Delay(2000);
items.Add("Item 1");
items.Add("Item 2");
items.Add("Item 3");
// 手动触发重新渲染
StateHasChanged();
}
}
在上面的代码中,我们在OnInitializedAsync方法中手动触发了StateHasChanged方法来重新渲染组件。这样就可以在加载数据后正确显示foreach循环中的元素。请注意,在实际情况下,您可能需要根据具体的异步加载逻辑进行适当的调整。