【问题标题】:Child subscribing to parent's events孩子订阅父母的活动
【发布时间】:2019-05-20 20:00:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

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

    在父组件上

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

    希望这会有所帮助...

    【讨论】:

    • 这样做不要求父事件是静态的吗?否则,您需要引用子组件中的父组件,这可能很棘手。静态事件也不是一个糟糕的主意吗?
    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多