我正在开发针对 .NET 9 的 Blazor WASM(独立)应用程序中的自动完成组件版本。
我能够使用以下代码将 绑定input
到string
变量并在用户输入其搜索关键字时采取行动,并且它工作正常,但是当我尝试将自动完成的 UI 移动到组件中时,将 绑定到我的变量似乎不起作用。该部件继续正常工作,并且我在每次击键后都会点击我的方法。@bind:after
input
bind:after
这是运行良好的代码,然后我将其移入一个组件:
...
<input @bind="UserInputText" @bind:event="oninput" @bind:after="OnUserInputChanged" />
...
@code {
private string? UserInputText = "";
private void OnUserInputChanged()
{
// Process user input and make suggestions
}
}
然后,我将 UI 部分放入我正在创建的新组件中,以将自动完成功能封装到其自己的组件中。
这是父代码:
...
<AutoComplete UserInputText="UserInput" UserInputTextChangedHandler="OnUserInputChanged" />
...
@code {
private string? UserInput = "";
private void OnUserInputChanged()
{
// Process user input and make suggestions
}
}
以下是组件内部的代码AutoComplete
:
@typeparam TItem
<div>
<input @bind="UserInputText" @bind:event="oninput" @bind:after="UserInputTextChangedHandler" />
</div>
@code {
[Parameter]
public string? UserInputText { get; set; }
[Parameter]
public Action UserInputTextChangedHandler { get; set; }
[Parameter]
public List<TItem> Suggestions { get; set; }
}
顺便说一句,我尝试使用EventCallback
而不是Action
传递OnUserInputChanged
给自动完成组件,但随后收到一条错误,指出:
参数 1:无法从“Microsoft.AspNetCore.Components.EventCallback”转换为“System.Action”
还请记住,OnUserInputChanged
即使我将该逻辑放入新组件中,接线实际上仍能正常工作。不再起作用的部分是绑定UserInputText
到input
组件内部。
我哪里犯了错误?