我有一个组件,可以使用参数从WebAPI获取要显示的数据。参数来自父组件,当参数值更改时,我需要刷新数据。
@if (somedata != null)
{
<span>@somedata.FirstOrDefault()?.SomeValue</span>
}
@code {
[Parameter]
public int SelectedLine
{
get => selectedLine;
set
{
if (selectedLine != value)
{
selectedLine = value;
UpdateAsync();
}
}
}
private int selectedLine;
private List<SomeData> somedata;
protected override async Task OnInitializedAsync()
{
await UpdateAsync();
}
private async Task UpdateAsync()
{
somedata = await SomeRepo.GetAsync(SelectedLine);
}
}
代码运行良好,但是我得到了警告(“由于未等待此调用,因此在调用完成之前将继续执行当前方法”),我认为这不是一个非常明智的决定。怎样才能做到正确?
最佳答案
您可以使用OnParametersSetAsync()正确等待获取数据。
然后,该属性不再需要二传手。
[Parameter]
public int SelectedLine { get; set; }
protected override async Task OnParametersSetAsync()
{
await UpdateAsync();
}