【问题标题】:Calling a method in the parent component from a child component using blazor server使用 blazor 服务器从子组件调用父组件中的方法
【发布时间】:2021-06-26 21:18:41
【问题描述】:

我正在使用 Blazor 服务器进行开发,并且有一个父组件 下面称为 EventCallBackParent。

        @page "/eventcallbackparent"

        <h3>EventCallBackParent</h3>

        <div>
            <EventCallBackChild onDoneButtonClicked=" "></EventCallBackChild>
        </div>

这是我的父组件的 c# 类/代码

        public partial class EventCallBackParent
            {

                public async void Done()
                {
                    //Call a method here
                    ModalDisplay = "none";
                    ModalClass = "";
                    StateHasChanged();
                }
            }

这是我的子组件的样子

        <h3>EventCallBackChild</h3>

        <div class="row align-items-center py-3">
            <div class="col-auto d-flex align-items-center">
                <div class="card" @onclick="DoneButtonClicked">
                    <div class="card-body">
                        <p>Standard</p>
                    </div>
                </div>
            </div>
        </div>


        @code {
         
            [Parameter]
            public EventCallback onDoneButtonClicked { get; set; }

            protected async Task DoneButtonClicked()
            {

            }
        }

这就是我想要发生的事情。单击标准卡时,我想 在我的父组件中调用 Done 方法。这可能吗?如果是,如何 我可以去吗?

【问题讨论】:

    标签: c# blazor-server-side


    【解决方案1】:

    由于您已经在子组件中声明了EventCallback 参数,您只需在DoneButtonClicked 方法中调用该回调:

    [Parameter]
    public EventCallback onDoneButtonClicked { get; set; }
    
    protected async Task DoneButtonClicked()
    {
        await onDoneButtonClicked.InvokeAsync();
    }
    

    在您的父组件中,您必须将子组件的 onDoneButtonClicked 参数与父组件的 Done 方法链接:

    <div>
        <EventCallBackChild onDoneButtonClicked="Done"></EventCallBackChild>
    </div>
    

    【讨论】:

    • 从字面上看,每次我在 Blazor 中使用 EventCallback 时,我都会停下来想“如果我还在使用 Web 窗体怎么办?”然后我看着阳光,听着窗外的鸟儿歌唱,明白人们说生活美好是什么意思。 :D
    • 像魅力一样工作。很好的解决方案
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2021-06-10
    • 2022-12-22
    • 2017-11-24
    • 1970-01-01
    • 2021-05-02
    • 2022-07-07
    相关资源
    最近更新 更多