首页 > 解决方案 > @onclick="(() => SomeMethod(参数))"

问题描述

我正在研究 Blazor,我偶然发现了这个表达式:

 @onclick="(() => SomeMethod(parameter))"

我无法在任何地方找到/谷歌这个(我猜是 lambda)表达式实际上在做什么。谁能解释一下这部分:() =>以及为什么要使用它以及在哪里使用它?

编辑:

上面和这个有什么区别:

 @onclick="SomeMethod(parameter)"

标签: lambdablazor.net-core-3.0

解决方案


使用此模式:

<input type="button" value="Click me" @onclick="@(() => SomeMethod("my string"))" />

当你想调用一个方法并传递一个参数时。在幕后,编译器创建了一个 EventCallback 结构,该结构提供了适当的委托类型,该类型封装了具有单个参数并返回 void 的方法

当您要调用没有参数的方法时,请使用此模式:

<input type="button" value="Click me" @onclick="@(SomeMethod1)" />

(not recommended, embedded in a Razor expression)

或者干脆使用最常见的用法:

<input type="button" value="Click me" @onclick="@SomeMethod1" />

这也是可能的:

<input type="button" value="Click me" @onclick="SomeMethod1" />

@符号在这里不再是必需的,但您可能会看到大多数开发人员使用它;出于习惯,因为这在过去是必需的)

希望这可以帮助...


推荐阅读