Blazor button event срабатывает несколько раз - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть приложение Blazor, в котором событие кнопки запускается при нажатии. Проблема в том, что событие запускается 3 раза при каждом нажатии кнопки. Я просто заметил, что если я нажму Enter, а не нажму на кнопку, событие сработает только один раз. (И я не знаю, почему ...)

Это кнопка и еще немного html, если необходимо:

    <div class="form-container uk-flex uk-flex-column uk-flex-middle">
        <span class="input-container">
            <input type="text" name="verb" id="form_verb" @bind="searchInput" />
        </span>
        <!-- This is the button -->
        <button type="button" class="uk-button uk-button-secondary" style="width:40%; margin-top:0.25rem;" @onclick="@Search">Lorem ipsum</button>
    </div>
    <h1>@counter</h1>

И это событие, которое запускается

private async Task Search()
{
    counter = counter + 1;
    navigatableSearchInput = searchInput;
    await tablaReconocimientos.SearchVerb(searchInput);
}

Вот пример того, что происходит: enter image description here

EDIT_1: изменено событие @onclick с @onclick = "@ Search". То же поведение.

EDIT_2: добавлено поведение ввода.

EDIT_3: разметка для пояснения кнопки

1 Ответ

1 голос
/ 24 апреля 2020

Как упоминалось выше @Taladan, функция вызывается каждый раз, когда страница отображается или обновляется. Я просто не заметил, что оставил вызов этой функции в OnAfterRender(). Я просто изменил эту часть, чтобы она называлась в OnParametersSet(), и работал как шарм.

У меня было это:

protected override void OnAfterRender(bool firstRender)
{
    if (searchInput != null) Search();
}

И я просто изменил на это

protected override Task OnParametersSetAsync()
{
    if (searchInput != null) Search();
    return base.OnParametersSetAsync();
}
...