首页 > 解决方案 > 将多个子组件作为参数传递

问题描述

因此,使用该组件将如下所示:

<ParentListComponent Header="Test">
   <ChildListItemComponent Name="1"/>
   <ChildListItemComponent Name="2"/>
   <ChildListItemComponent Name="3"/>
   <ChildListItemComponent Name="4"/>
</ParentListComponent>

ParentListComponent看起来像这样:

@foreach(var childComponent in listComponents){
    @childComponent
}

@code{

   [Parameter]
   Public List<ChildListItemComponent> listComponents { get; set; }
}

我知道我可以通过将它作为 ChildContent 传递来轻松呈现它,如下所示,但我真的很想保留该列表,以便我可以轻松地从父项访问每个​​项目。

[Parameter]
public RenderFragment ChildContent { get; set; }

我觉得我只是错过了这里的语法,但不幸的是我找不到这方面的信息。如果您能提供帮助,我将不胜感激。

标签: c#blazorblazor-server-sideblazor-client-side

解决方案


你会创建一个ParentComponent和一个ChildComponent。的标记ParentComponent将具有以下内容

<CascadingValue Value=this>
@ChildContent
</CascadingValue>

@code
{
  [Parameter]
  public RenderFragment ChildContent { get; set; }
}

现在您的孩子将可以访问父母,就像这样

[CascadingParameter]
public ParentComponent ParentComponent { get; set; }

OnInitialized你可以调用的方法ParentComponent.RegisterChild(this);中,IDisposable.Dispose你可以调用ParentComponent.UnregisterChild(this);

这两种方法可以添加到父类中以保留 ChildComponent 的列表。

这里有关于 Blazor 大学的完整演练。


推荐阅读