我有一个Blazor页面,其中显示了一个基于我动态添加/删除项目的列表的组件列表:
<TelerikButton OnClick="() => State.AddSymbols(SymbolToAdd)">Add</TelerikButton>
@foreach (var symbolToDisplay in State.SymbolsToDisplay)
{
<StockGraph SymbolToDisplay="@symbolToDisplay" OnRemoved="() => State.RemoveSymbol(symbolToDisplay)"/>
}
这是状态代码:
public void AddSymbols(string symbol)
{
SymbolsToDisplay.Add(symbol);
StateHasChanged();
}
public void RemoveSymbol(string symbol)
{
SymbolsToDisplay.Remove(symbol);
StateHasChanged();
}
以及该组件的代码:
<div class="stock-graph">
<p>
@companyData?.companyName
</p>
<div>
<TelerikButton class="delete-item" onclick="@OnRemoved">X</TelerikButton>
</div>
<TelerikChart ref="@chart">
<TelerikChartSeriesItems>
<TelerikChartSeries Type="ChartSeriesType.Line" Data="@data.StockValues"
Field="@nameof(StockValueData.StockValue)"
CategoryField="@nameof(StockValueData.Date)">
</TelerikChartSeries>
</TelerikChartSeriesItems>
<TelerikChartValueAxes>
<TelerikChartValueAxis Color="red"></TelerikChartValueAxis>
</TelerikChartValueAxes>
</TelerikChart>
这应该很简单。但是出于某种原因,即使删除列表中的必需值并包含所有正确的值,删除组件时也总是删除最后一个显示的组件。
我有一个在我的github上运行的代码示例:GitHubRepo
只需添加随机股票代码,例如GOOG,AAPL,ACC
答案 0 :(得分:0)
因此,事实证明问题出在我初始化/更新组件参数的方式中。 需要更新页面和组件中的数据后, OnInitAsync 不会再次运行。 相反,您必须使用 OnParametersSetAsync 以便组件正确更新其参数