onclick - Blazor组件中的OnClick和@onclick有什么区别

标签 onclick blazor

我发现了一些奇怪的东西,我想知道是否有人知道答案:

首先这不是这个问题: Different method calls in Blazor 该问题涉及 HTML 元素。我说的是组件。

所以我有自己的组件,名为 MyButton;并且它指定了 OnClick 参数:

MyButton.razor

<button @onclick="OnClick">Do Something</button>

@code {
    [Parameter]
    public EventCallback<MouseEventArgs> OnClick { get; set; }
}

当我使用 MyButton 时,我可以完全使用名称,即

<MyButton OnClick="SomeMethod" />

但这也有效:

<MyButton @onclick="SomeMethod" />

当我从 MyButton.razor 中删除整个 @code block 时,它们都给我完全相同的错误消息:

<Mybutton OnClick="MyMethod" />

Object of type 'MyButton' does not have a property matching the name 'OnClick'.

<Mybutton @onclick="MyMethod" />

Object of type 'MyButton' does not have a property matching the name 'onclick'.

唯一的区别在于大写字母; “OnClick”与“onclick”......这是合乎逻辑的。所以看起来 @onclick 与 OnClick 相同...但它们是一样的吗?

这仅仅是某种重载吗?

最佳答案

@onclick是原生 HTML 点击事件,OnClick是您在 MyButton 中显式公开的事件参数组件。

所以在这种情况下你应该使用

<MyButton OnClick="SomeMethod" />

我试图用 @onclick 重现用法但它对我不起作用。

对于科学,您可以尝试添加文本 <p>Like this</p>给你的MyButton组件并查看是否 @onclick事件仍然有效,如果它仅在您单击按钮或单击文本时触发。

另请参阅 Microsoft Docs获取详细信息。

关于onclick - Blazor组件中的OnClick和@onclick有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391629/

相关文章:

javascript - 如何使用 onclick 通过 id 调用脚本?

javascript - 单击菜单外部关闭菜单

.net-core - 在 Blazor 客户端应用程序中,登录后主页顶部显示“Hello”+ 一个非常长的哈希代码而不是用户名

c# - 状态存储在 fluxor 中的什么位置?

c# - 客户端 Blazor 表单提交两次

c# - 从 C# 调用 onclick 方法

javascript - 纯 Javascript : onClick executes toggle rows -- need image swap

javascript - 两个 onclick 函数中哪个函数首先起作用

c# - 使用 C#(无 JavaScript)将 Blazor WebAssembly 文件直接分块到 Azure Blob 存储

c# - Blazor:尝试激活自定义服务时出现 InvalidOperationException