将多个子组件作为参数传递

Ger*_*rit 2 c# blazor blazor-server-side blazor-client-side

所以使用组件看起来像这样:

<ParentListComponent Header="Test">
   <ChildListItemComponent Name="1"/>
   <ChildListItemComponent Name="2"/>
   <ChildListItemComponent Name="3"/>
   <ChildListItemComponent Name="4"/>
</ParentListComponent>
Run Code Online (Sandbox Code Playgroud)

ParentListComponent会是这个样子:

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

@code{

   [Parameter]
   Public List<ChildListItemComponent> listComponents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

[Parameter]
public RenderFragment ChildContent { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*ris 8

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

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

@code
{
  [Parameter]
  public RenderFragment ChildContent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在你的孩子可以像这样访问父母

[CascadingParameter]
public ParentComponent ParentComponent { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

这是您将自己添加到父类中以保留 ChildComponent 列表的两种方法。

有一个关于Blazor大学全步行通过这里