我在基本的blazor项目上遇到问题。我有一个父组件和一个子组件,其中有一个事件回调,我希望它传递回T类型。我遇到的问题是我在将MethodGroup转换为EventCallback时遇到错误。如果我将其转换为使用Action,那么它可以工作,但是我不能异步完成,这不是理想的选择。有什么想法我做错了吗?
父级
<Child
DeleteCallback="@OnDelete"></Child>
public async Task OnDelete(T item)
{
}
孩子
@typeparam T
[Parameter]
public EventCallback<T> DeleteCallback { get; set; }
<a @onclick="() => DeleteCallback.InvokeAsync(item)"></a>
我在这里添加了一个解释该问题的仓库。查看Blazor的问题,这应该已在2019年修复.https://github.com/scott-david-walker/EventCallbackError
你很亲密:
<ChildComponent Item="someModel" T="SomeModel" DeleteCallback="OnDeleteSomeModel" />
@code {
SomeModel someModel = new SomeModel();
void OnDeleteSomeModel(SomeModel someModel)
{
...
}
}
EventCallback使用通用类型,如果你不将类型传递给组件,blazor将无法推断出该类型。
这意味着,如果你有一个EventCallback<T>
,则需要将的值传递T
给组件,例如T="SomeType"
。
我发现了这个问题,因为您在使用模板化组件时遇到了公共EventCallback <T> DeleteCallback的麻烦,您需要声明T的类型,而不仅仅是通过用法来推断它。我会更新我的答案
做到了这一点,为帮助而欢呼。那真是个烦人的:-)