【问题标题】:Is there any way to enumerate childcontent from parent component before it renders?有没有办法在渲染之前从父组件枚举子内容?
【发布时间】:2019-07-22 01:54:07
【问题描述】:

出于某种原因,我需要知道包装组件中的所有子元素(至少是它们的标签)。例如,我有这样的结构:

<ParentComponent>
    <ChildComponent1/>
    <div>...</div>
    <h1>...</h1>
    ChildComponent2>
</ParentComponent>

当然,我的“ParentComponent”有这样的代码:

<div>
    @ChildContent
</div>

@functions
{

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

    ......
}

对于一些我不会打扰的琐碎细节,我需要获取子元素标签的列表,即在本例中:

["ChildComponent1", "div", "h1", "ChildComponent2"]

并且该列表应该在 ParentComponent 渲染之前可用,这意味着我无法让 Cascade 工作,因为当 ParentComponent 的 OnParameterSet 方法时,所有子级都会在他们自己的生命周期钩子中将自己添加到列表中已经完成,更不用说我不知道​​如何驱动一个常见的“div”元素来实现那个 Cascade-Use-Case。我想 RenderFragment 类背后可能隐藏着一些火花,但我无法挖掘出来。

所以,目标很简单,但我正在寻找的方式很艰难,谁能给我一些线索来解决这个问题?

【问题讨论】:

    标签: c# asp.net-core blazor


    【解决方案1】:

    有没有办法从父组件中枚举子内容 在渲染之前?

    ChildContent 参数是渲染内容片段的 RenderFragment 类型的委托。据我所知,您无法使用它来访问其组成部分。因此,您无法枚举 ChildContent...

    另请参阅:Is it possible to get a list of RenderFragments when overriding BuildRenderTree?

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2018-03-18
      • 2023-03-29
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多