我正在开发对所有人免费的投资跟踪应用程序。我将 net Core 与 blazor 和 Blazorise 一起用于图表。我偶然发现了渲染图表的问题。从官方 Blazorise 文档中,我添加了方法protected override async Task OnAfterRenderAsync(bool firstRender)
(参见下面的代码)。此方法应在页面第一次呈现时重绘图表。问题是这种方法总是触发两次。它第一次渲染图表,第二次将它们留空(第二次触发时 firstRender = false)。如果我删除 if 块,图表呈现正常。
此外,我添加了应该刷新数据 + 图表的按钮。按下此按钮后,图表会刷新两次(这是不受欢迎的行为,因为它会分散用户的注意力),有趣的是数据本身(值)在第二次之后会发生变化。
以前有人处理过这个问题吗?
我的html代码
...
<div class="btn" @onclick="(async () => await RerenderPage())">Refresh Data</div>
...
我的代码
List<Models.VM.OverView> overview = new List<Models.VM.OverView>();
protected override async Task OnInitializedAsync()
{
overview = await GetOverview(); //gets overview from api
}
public async Task<List<Models.VM.OverView>> GetOverview()
{
return await Http.GetFromJsonAsync<List<Models.VM.OverView>>("/api/Overview/GetOverView/" + await GetUserIdAsync);
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await HandleRedraw();
}
}
async Task HandleRedraw()
{
await pieChart.Clear();
//this method goes in the overview object and gets data from it
await pieChart.AddLabelsDatasetsAndUpdate(GetLabelsPieChart(), GetPieChartDataset());
}