Tra*_*ack 2 c# methods anonymous-function asp.net-core blazor
不确定在标题中写什么,它们可能不都是匿名方法,但这里是:
假设我们有这个异步函数:
public async Task Delete(){
//something
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Blazor 服务器端,我对以下四种调用函数的方式感到好奇。假设它们在 div 标签内。
onclick="@Delete"
onclick="@(() => Delete(id))"
onclick="@(async () => await Delete(id))"
onclick="@(e => Delete(person.Id))
我不确定 1 是否是 Blazor 的新手,但它是否理解该方法是异步的?
如果需要传入参数,将使用 2 和 3,但我以前从未使用过 async-part,只在较旧的帖子中看到过。还需要说"async () =>"吗?
在 Blazor 的早期版本中,您需要使用选项 3,因为async不支持函数。如果您错过了await,Blazor 无法知道该方法已完成,因此您需要手动调用,StateHasChanged以便在需要时重新渲染组件。
但是,现在 Blazor 确实支持异步方法,因此您可以坚持使用选项 1,但需要注意的是,您需要返回方法Task而不是void.
所以你需要这样的东西:
public async Task Delete(){
//something
}
Run Code Online (Sandbox Code Playgroud)
在 Blazor 中:
onclick="@Delete"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |