c# - 将多个子组件作为参数传递
问题描述
因此,使用该组件将如下所示:
<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; }
我觉得我只是错过了这里的语法,但不幸的是我找不到这方面的信息。如果您能提供帮助,我将不胜感激。
解决方案
你会创建一个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 大学的完整演练。
推荐阅读
- python - 如何在 pytest 会话结束时清理资源?
- sql - 为什么我的 WHERE 子句会影响我的 LEFT JOIN?
- ios - 如何在加载应用程序和完全加载网页视图页面之前直接添加启动画面图像?
- sql - 改进从 COBOL 文件到 SQL 的 ETL
- java - 将整个where子句传递给原生spring jpa @Query
- c# - 如何在 Realm 对象上设置 IList 属性
- graphql - 无法解决 Playground 错误:未提供所需类型 \"MemberInput!\" 的变量 \"$input\"
- outlook-addin - “对象不支持此方法” - 尝试更新电子邮件主题时出错 (MailItem.Subject)
- azure - Azure SQL DB 需要长期维护
- excel - 将列中单元格的值与另一列中的单元格值进行比较