- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这个问题看起来很愚蠢,请原谅;但我对 @
前缀的用法感到困惑。
将鼠标悬停在 onclick
等内置事件上时,Visual Studio 中的 IntelliSense 会显示事件类型(在本例中为 onclick
)是 Microsoft。 AspNetCore.Components.EventCallback
并且在组件中实现 EventCallback
时,类型显然又是 Microsoft.AspNetCore.Components.EventCallback
;
但是为什么像 onclick
这样的内置事件应该以 @
为前缀,而 EventCallback
(s) 应该像属性一样声明(没有@
作为前缀)?
最佳答案
Excuse me if this question seems silly; but I have confusion over the usage of @ prefix.
一点也不...这是一个非常重要的问题,Blazor 中的所有开发人员不仅应该能够回答,而且还应该能够采取行动。
属性“@onclick”是指示编译器创建 EventCallback“委托(delegate)”的编译器指令。 EventCallback 是一个存储对委托(delegate)的引用的结构;这是一个方法,它实际上是您分配给属性“@onclick”的值,例如:
<button type="button" @onclick="ClickMe">Click me</button>
@code
{
private void ClickMe()
{
Console.WriteLine("You clicked me...");
}
}
如您所见,ClickMe
是一种在您单击按钮时调用的方法。
您也可以使用不带@ 符号的Html 元素属性“onclick”。这当然不是编译器指令而是 Html 元素属性,对吧?并且它的值只能是一个 JavaScript 函数,例如:
<button type="button" onclick="window.ClickMe()">Click me</button>
现在,当您单击该按钮时,将调用在窗口对象上定义的名为 ClickMe
的 JavaScript 函数...请注意圆括号。
当然,有多种方法可以完成上述操作。
在您发布的照片中,Modal 组件有一个名为 onOK
的属性,其类型为 EventCallback
,因此它的值应该是一个合适的方法,ModalOnOK
。以下代码片段说明了这一点:
Modal.razor(Modal的定义)
@code{
[Parameter]
public EventCallBack onOK {get; set;}
}
可以看到onOK
是一个类型为EventCallBack
的参数属性。因此,在使用 Modal 组件的父组件中,您应该为 property 属性分配 EventCallBack
可以封装的方法的值。
抱歉,要说的很多很多,这只是 Material 的一小部分。但该分开了。
希望这有助于...
关于Blazor:内置@on{EVENT} 和自定义 EventCallback 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62413652/
我有一个带有 EventCallBack 参数的 blazor 组件,它利用允许多个参数的新结构格式 [Parameter] public EventCallback NewDayScrolledIn
Blazor 应用程序是相互交互的多个 Blazor 组件的集合,我们可以在其他父组件中使用子组件。在实际的应用程序中,将数据或事件信息从一个组件传递到另一组件是一种十分常见的场景。您可能会
我正在尝试在 Blazor 中开发一个组件,我希望它从 C# 类中获取所有功能(文本、EventCallbacks 等)。像这样: Blazor 组件(代码隐藏): public partial cl
我正在尝试在 Blazor 中开发一个组件,我希望它从 C# 类中获取所有功能(文本、EventCallbacks 等)。像这样: Blazor 组件(代码隐藏): public partial cl
如果这个问题看起来很愚蠢,请原谅;但我对 @ 前缀的用法感到困惑。 将鼠标悬停在 onclick 等内置事件上时,Visual Studio 中的 IntelliSense 会显示事件类型(在本例中为
我的情况是这样的:我正在尝试实现和自动完成。 自动完成将有一个 Parameter将收到 string并返回 IEnumerable . 这是我正在尝试做的一个例子 自动完成.razor @code
我正在构建一个 Blazor ProgressBar 演示,并且我试图将一些代码从我的 Blazor 组件移到一个名为 ProgressManager 的 C# 类中。这样我就可以抽象代码并使 Pro
我正在尝试打开一个带有父对话框回调的子对话框。如果我没有将任何参数从 child 传回给 parent ,我可以让它工作,但是当我尝试将 bool 值从 child 传递给 parent 时,我得到一
我遇到了一个基本的 blazor 项目的问题。我有一个父组件和一个带有事件回调的子组件,我希望它传回一种类型的 T。我遇到的问题是我在将 MethodGroup 转换为 EventCallback 时
我有一个工作正常的简单 Blazor 服务器应用程序。 我正在尝试使用 Blazor WebAssembly 和 dotnet 5 创建等效的应用程序。 在工作应用程序中,我有一个 razor 组件,
当有人点击我网站上的“购买”按钮时,我正在尝试使用 dataLayer 和 dataLayer.push 通过 Google Tag Manager 跟踪此事件。 它看起来像这样: dataLayer
我正在尝试监听 ETW 内核事件。 第 1 步:调用 OpenTrace ,指定 EventCallback和可选 BufferCallback在我调用 ProcessTrace 期间将调用的函数:
我是 blazor C# 的新手,正在尝试制作一个简单的倒数计时器网站。我的网站包括: 显示计时器的文本 启动和停止按钮 用于设置计时器的按钮 我在设置计时器的按钮上遇到了问题。当我点击它时,它不会设
我是一名优秀的程序员,十分优秀!