c# - 响应来自父组件的子事件
问题描述
我有 2 个组件,A
并且是 . 的孩子。有类似( ) 的东西吗?如何在父级中附加一个可以响应其子级输出的事件处理程序?B
B
A
EventEmitter
Angular
Blazor
孩子
<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 很陌生。
解决方案
您可以使用 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()。