Blazor按钮事件多次触发

时间:2020-04-23 16:27:03

标签: c# events blazor blazor-server-side

我有一个炫耀的应用程序,其中按下时会触发按钮事件。问题在于,每次您按下按钮时,都会触发该事件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:按Enter键添加了行为。

EDIT_3:用于澄清按钮的标记

1 个答案:

答案 0 :(得分:1)

如上面的@Taladan所述,每次呈现或更新页面时都会调用该函数。我只是没有注意到我在OnAfterRender()中留下了对该函数的调用。我只是更改了要在OnParametersSet()中调用的那一部分,并且像一个饰物一样工作。

我有这个:

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

然后更改为此

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