该问题的原因是在多个相同组件的实例中使用了同名的EventCallback,导致事件处理程序无法正确地触发。
解决方法是在组件中使用独立的EventCallback名称,这可以通过在组件中使用一个唯一的标识符来实现。我们可以使用组件的“Guid”作为唯一标识符,如下所示:
@code {
[Parameter]
public Guid UniqueId { get; set; }
[Parameter]
public EventCallback OnValueChanged { get; set; }
private string _value;
private async Task HandleValueChanged()
{
await OnValueChanged.InvokeAsync(_value);
}
}
在组件中使用独立的事件处理程序名称,如下所示:
这将为每个组件实例创建一个唯一的EventCallback实例,解决了事件处理程序在多个组件实例中无法正常触发的问题。