使用 blazor 服务器从子组件调用父组件中的方法

Calling a method in the parent component from a child component using blazor server

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

        @page "/eventcallbackparent"

        <h3>EventCallBackParent</h3>

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

这是我父组件的 c# class/code

        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 方法。这可能吗?如果是,如何 我可以去做吗?

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

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

protected async Task DoneButtonClicked()
{
    await onDoneButtonClicked.InvokeAsync();
}

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

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