【发布时间】:2021-04-16 11:45:51
【问题描述】:
所以我正在试验 Blazor,我想了解这两者之间的区别。
<p @onclick="OnClickCallback">Click me normal</p>
<p @onclick="async () => await OnClickCallback()">Click me lambda</p>
@code {
private async Task OnClickCallback()
{
await Task.Delay(500);
}
}
这两种方法有什么区别。幕后发生了什么。我发现 EF Core 存在一些问题(这是一个完全不同的主题),其中 lambda 方法没有抛出异常,而普通方法却抛出了异常。
【问题讨论】:
-
@Bennyboy1973 也不明白。感谢您的支持。我相信很多人根本不知道这一点。所以我想知道我的程序做了什么,而不仅仅是知道它是否有效。
-
是的,我认为衡量标准是,“我无法立即回答这个问题,所以这是一个无关紧要的问题。拇指向下!”
-
@RoyBerris - 详细说明 Johnathan 的回答。重要的一点在这里:
private async Task OnClickCallback()返回一个任务。通过这样做,Blazor 事件处理程序可以等待OnClickCallback完成,然后再在组件上调用StateHasChanged。太多人犯了这个错误,然后必须手动调用StateHasChanged来让 UI 更新为最新的更改。 -
@RoyBerris。我对您的问题进行了一些小的编辑,以尝试重新打开它。您必须更改某些内容才能重新提交。
标签: c# lambda blazor blazor-server-side blazor-webassembly