Warm tip: This article is reproduced from serverfault.com, please click

components-开拓者

(components - Blazor)

发布于 2020-10-11 20:59:19

我在基本的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

Questioner
scottdavidwalker
Viewed
11
16.4k 2020-12-07 22:49:54

你很亲密:

<ChildComponent Item="someModel" T="SomeModel" DeleteCallback="OnDeleteSomeModel" />

@code {
    SomeModel someModel = new SomeModel();

    void OnDeleteSomeModel(SomeModel someModel)
    {
        ...
    }
}

EventCallback使用通用类型,如果你不将类型传递给组件,blazor将无法推断出该类型。

这意味着,如果你有一个EventCallback<T>,则需要将的值传递T给组件,例如T="SomeType"