Child 正在订阅 parent 的活动
Child subscribing to parent's events
在 Blazor 中订阅 parent 控件到 child 的事件是微不足道的:在 child 中,我只是声明
[Parameter] Func OnClick { get; set; }
并在 child 控件标记中将 parent 的方法分配给 OnClick。但是,我怎样才能达到相反的效果呢?我希望 child 对来自 parent 控件的事件做出反应。到目前为止,我只是简单地从 parent 调用 child 方法 - 有更好的方法吗?
您可以在父组件上定义一个事件,该事件在引发事件时可以由订阅者(例如,子组件)处理。
在父组件上
定义一个事件处理程序,比如 StateChanged
public event EventHandler StateChanged;
从父代码中引发事件
StateChanged?.Invoke(this, EventArgs.Empty);
关于子组件
// Subscribe to the event defined on the parent component
protected async override Task OnInitAsync()
{
ParentComponent.StateChanged += OnStateChanged;
}
// Dispose of the component
void IDisposable.Dispose()
{
ParentComponent.StateChanged -= OnStateChanged;
}
void OnStateChanged(object sender, EventArgs e) => Call_A_Method_That_Do_Something();
希望这对您有所帮助...
在 Blazor 中订阅 parent 控件到 child 的事件是微不足道的:在 child 中,我只是声明
[Parameter] Func OnClick { get; set; }
并在 child 控件标记中将 parent 的方法分配给 OnClick。但是,我怎样才能达到相反的效果呢?我希望 child 对来自 parent 控件的事件做出反应。到目前为止,我只是简单地从 parent 调用 child 方法 - 有更好的方法吗?
您可以在父组件上定义一个事件,该事件在引发事件时可以由订阅者(例如,子组件)处理。
在父组件上
定义一个事件处理程序,比如 StateChanged
public event EventHandler StateChanged;
从父代码中引发事件
StateChanged?.Invoke(this, EventArgs.Empty);
关于子组件
// Subscribe to the event defined on the parent component
protected async override Task OnInitAsync()
{
ParentComponent.StateChanged += OnStateChanged;
}
// Dispose of the component
void IDisposable.Dispose()
{
ParentComponent.StateChanged -= OnStateChanged;
}
void OnStateChanged(object sender, EventArgs e) => Call_A_Method_That_Do_Something();
希望这对您有所帮助...