При использовании EventCallback в моем компоненте параметры для элемента управления отправляются снова / не обновляются корректно.
Компонент
<button @onclick="@(e => ChangePlaceholder())">Change Placeholder</button>
<button @onclick="@(e => ChangePlaceholderEvent())">Change Placeholder Event</button>
<label>@Placeholder</label>
@code {
[Parameter]
public string Placeholder { get; set; }
[Parameter]
public EventCallback<string> OnChanged { get; set; }
private void ChangePlaceholder()
{
Placeholder = "hello";
}
private void ChangePlaceholderEvent()
{
Placeholder = "hello";
OnSelectedChanged.InvokeAsync(Placeholder);
}
}
Родительская страница
<Control Placeholder="something" OnChanged=@UpdateSomething />
@code {
static void UpdateSomething(string someString)
{
Console.WriteLine($"Event went kablam: {someString}");
}
}
Если вы должны были запустить функцию ChangePlaceholder () , тогда пользовательский интерфейс обновит и изменится, скажем, 'hello' , но если вы запустите функцию ChangePlaceholderEvent () , метка возвращается к 'что-то' , которое является строкой, в которой параметр Placeholder отправляется в первую очередь.
Это заставляет меня поверить, что запуск EventCallback также делает другие параметры для элемент управления для повторной отправки.
Как остановить повторную отправку параметров?
Редактировать: я создал приложение webassemby и протестировал тот же код, и возникает та же ошибка.