Blazor技术问题:如何判断回调函数参数是否已传入?
在Blazor中判断EventCallback是否被父组件传入的方法
你可以直接通过EventCallback的HasDelegate属性来判断是否有父组件传入了回调函数,无需额外传递布尔值。
子组件实现代码
@* 根据是否传入回调显示不同内容 *@ @if (Event.HasDelegate) { <button @onclick="TriggerEvent">触发父组件回调</button> } else { <span>未绑定回调逻辑</span> } @code { // 遵循C#命名规范,参数名首字母大写 [Parameter] public EventCallback Event { get; set; } private async Task TriggerEvent() { await Event.InvokeAsync(); } }
父组件使用示例
@* 传入回调的场景 *@ <SomeTemplate Event="@ThisEvent"/> @* 不传入回调的场景 *@ <SomeTemplate/> @code{ private async Task ThisEvent() { // 自定义回调逻辑 } }
EventCallback内部维护了一个委托实例,HasDelegate属性会直接返回该委托是否被赋值,刚好满足判断父组件是否传入回调的需求。
内容的提问来源于stack exchange,提问作者Nope Never
相关产品推荐
相关产品推荐

