我有一个炫耀的应用程序,其中按下时会触发按钮事件。问题在于,每次您按下按钮时,都会触发该事件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);
}
EDIT_1:已将@onclick事件更改为@onclick =“ @ Search”。行为相同。
EDIT_2:按Enter键添加了行为。
EDIT_3:用于澄清按钮的标记
答案 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();
}