Как узнать, когда был запущен EventCallback?
Определить делегат события, который вы можете запустить при срабатывании EventCallback ... просто джокер.
Вы можете сделать это различными способами. Вот один из них:
ComponentA.razor
<ComponentB ComponentBEvent="EventCallback.Factory.Create<string>(this,
mymethod)"></ComponentB>
<p>Message from Component A @message</p>
@code {
private string message;
private Task mymethod(string str)
{
message = str;
return Task.CompletedTask;
}
}
ComponentB.razor
<ComponentC ComponentCEvent="EventCallback.Factory.Create<string>(this,
mymethod)"></ComponentC>
<p>Message from Component B @message</p>
@code {
string myvalue;
[Parameter]
public EventCallback<string> ComponentBEvent { get; set; }
private string message;
private async Task mymethod(string str)
{
message = str;
if(ComponentBEvent.HasDelegate)
{
await ComponentBEvent.InvokeAsync(str);
}
}
}
Компонент C .razor
<input type="text" value="@myvalue" @oninput="@((args) => { myvalue =
args.Value.ToString(); ComponentCEvent.InvokeAsync(args.Value.ToString());
})" />
<p>Message from Component C @myvalue</p>
@code {
string myvalue;
[Parameter]
public EventCallback<string> ComponentCEvent { get; set; }
}
Использование
<ComponentA />
Примечание. Это поведение можно реализовать с помощью службы уведомлений, в которой используется шаблон состояния. Эта служба контролирует состояние объектов, обновляет, удаляет и т. Д. c. И определяет события, которые запускаются при возникновении действия, например, объект сотрудника был добавлен в компонент A, и в этом случае служба уведомлений уведомляет все заинтересованные стороны. (подписывая компоненты) этого факта.
Надеюсь, это поможет ...