2

在 Blazor 中订阅子事件的父控件是微不足道的:在子事件中,我只是声明

[参数] Func OnClick { get; 放; }

并在子控件标记中将父方法分配给 OnClick。但是,我怎样才能达到相反的效果呢?我希望孩子对来自父控件的事件做出反应。到目前为止,我只是简单地从父级调用子方法 - 有更好的方法吗?

4

1 回答 1

4

您可以在父组件上定义一个事件,该事件可以在引发事件时由订阅者(例如,子组件)处理。

在父组件上

定义一个事件处理程序,比如 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();

希望这可以帮助...

于 2019-05-20T20:12:31.023 回答