[英]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.