【问题标题】:Passing a function with parameters to a child component将带参数的函数传递给子组件
【发布时间】:2020-10-24 00:37:22
【问题描述】:

我正在使用 Javascript 互操作为一些我最喜欢的 Javascript 插件编写 blazor 组件包装器。

我的父组件有这个功能:

async Task<IEnumerable<DpEvent>> GetEvents(DateRange dateRange)
{
    return await EventManager.GetEvents().Where(e => e.StartDate >= dateRange.StartDate).Where(e => e.EndDate <= dateRange.EndDate).ToListAsync();
}

我的子组件有这个参数:

[Parameter] public Func<DateRange, Task<IEnumerable<DpEvent>>> GetEvents { get; set; }

我必须做些什么才能将我的 GetEvents 方法传递给我的子组件,如下所示:

<ChildComponent GetEvents="GetEvents"></ChildComponent>

【问题讨论】:

    标签: c# asp.net-core events callback blazor


    【解决方案1】:

    我能够通过为我的回调创建一个自定义委托来解决这个问题。

    我想传递给子组件的函数:

    async Task<IEnumerable<DpEvent>> GetEvents(DateRange dateRange)
    {
        return await EventManager.GetEvents().Where(e => e.StartDate >= dateRange.StartDate).Where(e => e.EndDate <= dateRange.EndDate).ToListAsync();
    }
    

    我的代表的定义和声明:

    public delegate Task<IEnumerable<DpEvent>> GetEventsDelegate(DateRange dateRange);
    public GetEventsDelegate GetEventsCallBack;
    

    将我的代表分配给我的职能:

    protected override async Task OnInitializedAsync()
    {
        GetEventsCallBack = GetEvents;
    }
    

    将我的委托传递给我的子组件:

    <ChildComponent GetEvents="GetEventsCallBack"></ChildComponent>
    

    我的子组件上的参数:

    [Parameter] public Func<DateRange, Task<IEnumerable<DpEvent>>> GetEvents { get; set; }
    

    最后,我的子组件可以使用委托:

    IEnumerable<DpEvent> dpEvents = await GetEvents.Invoke(dateRange);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2018-07-02
      • 2019-05-30
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多