blazor - 将按钮包装在自定义组件中并传播 onclick 事件
问题描述
我想将输入(类型按钮)包装在自定义组件中,以便我可以应用隔离的 css 和一些特殊参数来控制。但是如何将 onclick 和其他事件从输入传播到我的组件?
当您使用输入按钮时,您可以使用 onclick 事件及其设置,如下所示:
<input type="button" @onclick:preventDefault="true" @onclick:stopPropagation="true" @onclick="@someMethod" />
如何使用我的组件实现相同的效果?所以我可以有:
<customBUtton @onclick:preventDefault="true" @onclick:stopPropagation="true" @onclick="@someMethod" />
谢谢你的帮助
解决方案
您可以使用EventCallback
或EventCallback<T>
。与回调相比,这些更适合Action
或Func
因为回调可能必须调用StateHasChanged
才能呈现更改。使用EventCallback
orEventCallback<T>
这个调用是由框架自动完成的。
假设您有一些子组件:
<button @onclick="@(() => OnClick.InvokeAsync("eventcallback invoked"))">Click me</button>
@code {
[Parameter] public EventCallback<string> OnClick { get; set; }
}
然后是父组件
<ChildComponent OnClick="Handler"></ChildComponent>
@code {
void Handler(string message)
{
...
}
}
推荐阅读
- python - 如何正确模拟类依赖项?
- javascript - 保存草稿按钮以避免在页面刷新时丢失数据 React
- android - E/NotificationService:包已经发布或排队 25 个通知
- php - 如何回显嵌套的 stdClass PHP(json 编码解码)
- c# - 无法加载“Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.AutoValidateAntiforgeryTokenAuthorizationFilter”
- sorting - 2 与列进行比较的文件
- kubernetes - 使用集群范围的资源多次安装到同一个 helm 图表的不同命名空间
- javascript - 如何通过对象键过滤对象数组?
- android - 将项目迁移到 Android X 后,无法从 Build>>Build Bundle(s) /APK(s)>>Build Apk(s) 创建 Apk
- r - R中两个二项式分布的交集