簡體   English   中英

Blazor 將 function 調用附加到 EventCallBack

[英]Blazor attach function call to EventCallBack

我有一個 blazor function 這是

public async Task DoSomething()

我有另一個 class object 像這樣:

public class SomeClass
{
    public string Title { get; set; }
    public string Icon { get; set; }
    public EventCallback OnClick {get;set;}
}

此 class object 由 blazor 組件消耗。 我想做的是將 DoSomething() 事件附加到 class object 中的 EventBackkBack OnClick。 我試過這個:

_collection.Add(new SomeClass{ Title = "some title", Icon = "icon", OnClick = DoSomething});

這不起作用,因為編譯器說無法將方法組轉換為非委托類型 EventCallBack ...

如果我將屬性 OnClick 更改為“Action”,我可以讓它工作,但這需要 function 調用為“async void”。 由於其他原因,我不能這樣做。

有沒有辦法讓我將此異步任務 function 附加到 OnClick? 謝謝!

弄錯了: EventCallBack是您在 Razor 組件上公開的可綁定屬性,通常不是 class 上的屬性。

Chris Sainty 在本文中展示了其工作原理: https://chrissinty.com/3-ways-to-communicate-between-components-in-blazor/

在第一個示例中,他的組件具有可綁定屬性

[Parameter] public EventCallback<string> OnClick { get; set; }

這告訴使用該組件的人它將發送帶有字符串參數的事件。 這可以綁定到一個方法,他接下來會展示:

<ChildComponent OnClick="ClickHandler"></ChildComponent>

<p>@message</p>

@code {

    string message = "Hello from ParentComponent";

    void ClickHandler(string newMessage)
    {
        message = newMessage;
    }

}

請注意,綁定方法ClickHandler不是異步的。 Blazor 支持異步和同步調用,也可以是

    async Task ClickHandler(string newMessage)
    {
        message = await SomeAsyncMethod(newMessage);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM