首页 > 解决方案 > 响应来自父组件的子事件

问题描述

我有 2 个组件,A并且是 . 的孩子。有类似( ) 的东西吗?如何在父级中附加一个可以响应其子级输出的事件处理程序?BBAEventEmitterAngularBlazor

孩子

<button onclick="Emit">Press me</button>
@functions(){
[Parameter] // i do not know how the `Output` is called
private string Pressed {get;set;}
public void Emit()
{
  //somehow emit `Pressed` to the parent , make him respond
}
}

父组件

<Child [Pressed]="doSomething"> </Child>
@functions{
 doSomething(string value){
  Console.WriteLine("Child sent me : "+value);
 }
}

PS抱歉语法错误,我对 blazor 很陌生。

标签: c#eventemitterblazor

解决方案


您可以使用 Action 参数

<button onclick="Emit">Press me</button>
@functions(){
[Parameter] protected Action<string> Pressed {get;set;}

public void Emit()
{
  Pressed?.Invoke("Some String");
}
}

在 Emit 中,您使用条件来检查是否有人订阅了 Action 并调用它,并传入参数。

不要忘记,在 Parent 中,如果要更新页面,请在“doSomething”方法中调用 StateHasChanged()。


推荐阅读