Blazor:{EVENT}上的内置@on与自定义EventCallback之间的区别
如果这个问题看起来很傻,请原谅;但是我对Blazor:{EVENT}上的内置@on与自定义EventCallback之间的区别,blazor,Blazor,如果这个问题看起来很傻,请原谅;但是我对@前缀的用法感到困惑 将鼠标悬停在内置事件(如onclick)上时,Visual Studio中的IntelliSense显示事件类型(onclick,在本例中)为Microsoft.AspNetCore.Components.EventCallback,在组件中实现EventCallback时,显然,类型也是Microsoft.AspNetCore.Components.EventCallback 但是为什么像onclick这样的内置事件应该以@作为前缀
@
前缀的用法感到困惑
将鼠标悬停在内置事件(如onclick
)上时,Visual Studio中的IntelliSense显示事件类型(onclick
,在本例中)为Microsoft.AspNetCore.Components.EventCallback
,在组件中实现EventCallback
时,显然,类型也是Microsoft.AspNetCore.Components.EventCallback
但是为什么像onclick
这样的内置事件应该以@
作为前缀,而EventCallback
(s)应该像属性一样声明(没有@
作为前缀)
如果这个问题看起来很傻,请原谅;但是我对@prefix的用法感到困惑
一点也不。。。这是一个非常重要的问题,Blazor中的所有开发人员不仅应该能够回答这个问题,而且应该能够采取行动
属性“@onclick”是一个编译器指令,指示编译器创建EventCallback“委托”。EventCallback是存储对委托的引用的结构;这是一个方法,实际上是您分配给属性“@onclick”的值,例如:
<button type="button" @onclick="ClickMe">Click me</button>
@code
{
private void ClickMe()
{
Console.WriteLine("You clicked me...");
}
}
现在,当您单击按钮时,在窗口对象上定义的名为ClickMe
的JavaScript函数被称为。。。注意圆括号
当然,有各种各样的方法来做上面的事情
在您发布的照片中,模态组件有一个名为onOK
的属性,其类型为EventCallback
,因此它的值应该是一个合适的方法,ModalOnOK
。以下代码片段说明了这一点:
Modal.razor(模态的定义)
如您所见,onOK
是一个类型为EventCallBack
的参数属性。因此,在使用模态组件的父组件中,应该使用EventCallBack
可以封装的方法的值来分配property属性
对不起,有很多很多话要说,这只是材料的一小部分。但该分手了
希望这有助于 正是@enet很好地解释了这一点:)
<button type="button" onclick="window.ClickMe()">Click me</button>
@code{
[Parameter]
public EventCallBack onOK {get; set;}
}