Blazor按钮,使用父组件@onclick

2024-04-16

是否可以使用父组件方法@onclick,或者我需要从子组件中调用它?

假设我想调用父方法 Foo()。

Parent

@page "/"

// Custom component button
<Button Text="Some text" @onclick="Foo" Apperance="@Style.secondary" /> 


@code {
    async Task Foo() 
    {
        // ...
    }
}

Child

<button class="btn @_cssClass"><span>@Text</span></button>

@code {
    public enum Style
    {
        primary,
        secondary,
        tertiary,
        danger
    }

    [Parameter]
    public string Text { get; set; }
    [Parameter]
    public Style Apperance { get; set; }
    private string _cssClass { get; set; }

    protected override void OnInitialized()
    {
        _cssClass = Apperance switch
        {
            Style.secondary => "btn--secondary",
            Style.tertiary => "btn--tertiary",
            Style.danger => "btn--danger",
            _ => "btn--primary"
        };
    }
}

我收到此错误:


Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Object of type 'Tidrapport.Client.Components.Button' does not have a property matching the name 'onclick'.
System.InvalidOperationException: Object of type 'Tidrapport.Client.Components.Button' does not have a property matching the name 'onclick'.  

我确实想要一个子按钮组件,当单击它时(在父组件中呈现) - 我想调用父组件中的方法。


所以我找到了我的问题的答案,你设计一个EventCallback发现于docs https://learn.microsoft.com/en-us/aspnet/core/blazor/components/event-handling?view=aspnetcore-3.1#eventcallback.

所以对我来说,它看起来像这样。

Parent

@page "/"

// Custom component button
<Button Text="Some text" OnClickCallback="@Foo" Apperance="@Style.secondary" /> 

@code {
    async Task Foo() 
    {
        // ...
    }
}

Child

<button class="btn @_cssClass" @onclick="OnClickCallback"><span>@Text</span></button>

@code {
    public enum Style
    {
        primary,
        secondary,
        tertiary,
        danger
    }

    [Parameter]
    public string Text { get; set; }
    [Parameter]
    public Style Apperance { get; set; }
    private string _cssClass { get; set; }
    [Parameter]
    public EventCallback OnClickCallback { get; set; } // this is where to you pass the parent function to be executed as a callback

    protected override void OnInitialized()
    {
        _cssClass = Apperance switch
        {
            Style.secondary => "btn--secondary",
            Style.tertiary => "btn--tertiary",
            Style.danger => "btn--danger",
            _ => ""
        };
    }
}

因此 onclick 事件绑定到您在子组件中设计的事件处理程序。它可以是类型T如果您想使用参数,请在文档中了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor按钮,使用父组件@onclick 的相关文章

随机推荐

  • 枚举上忽略 JSON 绑定 @JsonbTypeDeserializer 注释?

    我正在将 JAXB 应用程序转换为JSON B http json b net docs user guide html我在尝试使用自定义反序列化 Java 枚举时遇到了问题JsonbDeserializer在我的一项测试中 我需要反序列化
  • 克隆后如何删除原始元素?

    HTML div p class test1 test 1 p p class test2 test 2 p p class test3 test 3 p p class test4 test 4 p div div class click
  • ActionMailer 不在开发 Rails 4 中发送邮件

    为什么这个邮件程序不发送任何邮件 或者有什么调试的想法吗 在 my app config environments development rb 中 我有以下代码 config action mailer delivery method s
  • 如何获取 Oid 的名称(#Snmp)?

    好的 按照建议Lex Li https stackoverflow com users 11182 lex li我尝试使用其他库获取 Oid 名称 SnmpLib http sharpsnmplib codeplex com 这里是示例 p
  • 网络响应超时错误 (create-react-native-app) (expo)

    我正在尝试在 android 中的 expo 应用程序上运行 create react native app 首先 我通过编写命令创建了项目 创建反应本机应用程序测试 然后我执行了 npm 启动 然后从expo应用程序扫描二维码 但扫描二维
  • Spring Boot Mongodb 按 ID 搜索返回 null

    我用 mongodb 创建了一个 Spring Boot 项目 当我将数据插入集合时 它会被插入 但是当我尝试从中获取数据时findOne by id基于 id 的插入值总是返回 null 我在下面给出了我的模型类和插入方法 请告诉我出了什
  • 如何在 DLL 上使用 app.config 而不是 exe

    这是一个姐妹问题以及我的第一个问题允许使用 NET 2 0 构建的 C 应用程序在 NET 4 0 4 5 上运行 https stackoverflow com questions 13461185 allow c sharp appli
  • Selenium - 在检查 HTML 之前找不到可见元素?

    我目前正在使用 Selenium 进行网络爬虫应用程序 在几个成功的模块之后 以下情况让我陷入困境 我试图找到 菜单 类的一个元素 其文本 报告 位于名为的框架内 框架 应用 很简单 对吧 应该很简单 browser webdriver C
  • 扫描仪双值 - InputMismatchException

    我尝试以最简单的方式使用扫描仪 Code double gas efficiency distance cost Scanner scanner new Scanner System in System out print Enter th
  • MongoDB更新数组的多条记录[重复]

    这个问题在这里已经有答案了 我最近开始使用 MongoDB 并且有一个关于更新文档中的数组的问题 我得到这样的结构 id ObjectId post comments user test avatar static avatars asd
  • 实体框架级联删除问题-外键设置为空

    我有以下使用实体框架映射的模型 Mitglied gt Auftrag gt Teilprojekt 我已经用外键和 删除级联 设置了数据库中的所有内容 如果我对数据库执行一些测试 一切都会正常 当我使用实体框架添加尤其是删除对象时 问题就
  • 生成 PDF 格式的 Crystal 报告...如何在新选项卡或页面中打开?

    我编写了一段代码来生成 PDF 格式的 Crystal Reports 报告 但是它在用户进行搜索并单击按钮的同一页面中打开 有什么方法可以在新选项卡或页面中打开 PDF 我的代码是 private void OpenPDF ReportD
  • Word 2007 VBA - 使一些文本变为粗体和其他斜体

    我有以下代码 用于从 Excel 单元格中选择数据并替换 Word 文档中的特定文本 出于此问题的目的 Excel 单元格已替换为纯文本字符串 数据 转到 是恒定的 那么数据 aaa bbb 可以是任何内容 直到我们到达 of 它也是恒定的
  • Idris - 在 n 维向量上映射操作

    我在 Idris 中定义 n 维向量如下 import Data Vect NDVect Num t gt rank Nat gt shape Vect rank Nat gt t Type gt Type NDVect Z t t NDV
  • 如何在 Luigi 中启用动态需求?

    我在 Luigi 中构建了一个任务管道 由于该管道将在不同的上下文中使用 因此可能需要在管道的开头或结尾包含更多任务 甚至任务之间的依赖关系完全不同 就在那时我想 嘿 为什么要在我的配置文件中声明任务之间的依赖关系 所以我在 config
  • 抽象类、接口和自动装配

    我有以下主要课程 public class Startup implements UncaughtExceptionHandler Autowired private MessageListener messageListener priv
  • 如何清空字符数组?

    有一个像 char Members 255 这样的字符数组 如何在不使用循环的情况下完全清空它 char members 255 我所说的 空 是指如果它存储了一些值 那么它就不应该 例如 如果我执行 strcat 那么旧值不应保留 mem
  • 手动合并拉取请求

    所以我在github上有以下情况 我从创建了一个新分支mainbranch并命名为userstory1 我在分支中推送了我的更改userstory1并向我的同事提出了拉取请求 他发现文件夹结构不正确 因此将我的代码文件夹重命名为mainbr
  • 如何在 XLOPER 和 VARIANT 之间编组? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Excel 插件 XLL 它与 COM 对象进行通信 所以 我必须在 XLOPER 和
  • Blazor按钮,使用父组件@onclick

    是否可以使用父组件方法 onclick 或者我需要从子组件中调用它 假设我想调用父方法 Foo Parent page Custom component button