c# - 将参数传递给 Blazor 组件
问题描述
我想不出如何实现以下目标:
我需要将参数集合(或数组)传递给我的 Blazor 组件。传递的参数是 Blazor 组件。参数集合必须作为嵌套标记传递。必须能够分别调用每个传递的参数组件的渲染。
也就是说,我想要这样的东西:
<MyComponent>
<ParameterCollection>
<MyParameterComponent1>Caption1</MyParameterComponent1>
<MyParameterComponent2>Caption2</MyParameterComponent2>
<MyParameterComponent3>Caption3</MyParameterComponent3>
</ParameterCollection>
</MyComponent>
我的组件代码:
@code{
[Parameter]
public RenderFragment[] ParameterCollection {get; set;} //Runtime error
}
我想得到的显然是在这里实现的商业 Blazor 组件(选择 VIEW SOURCE 选项卡)。向 GridColumns 参数传递 GridColumn 组件的集合。更准确地说,我认为,它是它们对应的 RenderFragments 的集合。问题是它是如何完成的?
解决方案
Blazor 无法获取渲染片段的集合作为参数。这是两种不同的方法,您可以将动态组件计数作为参数传递
- 如果您只想传递多个组件,但可以按照与传递它们相同的顺序呈现它们:
<MyComponent>
<ParameterCollection>
<MyParameterComponent1>Caption1</MyParameterComponent1>
<MyParameterComponent2>Caption2</MyParameterComponent2>
<MyParameterComponent3>Caption3</MyParameterComponent3>
</ParameterCollection>
</MyComponent>
@code{
[Parameter]
public RenderFragment ParameterCollection {get; set;}
}
您可以将它们渲染到文件中@ParameterCollection
的任何位置.razor
。
这是这种方法的一个工作示例:https ://blazorrepl.com/repl/QaFEadlQ52kWHVkX13
- 当您想要同时计算两个动态组件并且想要控制它们的放置位置时。
在这种方法中,您仅使用该组件来传递一些元数据 - 类似于 @Henk Holterman 的建议:
<MyComponent>
<ParameterCollection>
<MyParameterComponent1>Caption1</MyParameterComponent1>
<MyParameterComponent2>Caption2</MyParameterComponent2>
<MyParameterComponent3>Caption3</MyParameterComponent3>
</ParameterCollection>
</MyComponent>
@code{
[Parameter]
public RenderFragment ParameterCollection {get; set;}
}
这样,您只需将 @ParameterCollection 放在.razor
包裹在父组件的 CascadingValue 中的文件的开头即可。这将触发所有子组件的渲染。
在每个组件的初始化中,您需要触发将元数据填充到父级:
@code {
[CascadingParameter]
private MyComponent Parent { get; set; }
protected override void OnInitialized()
{
if (Parent != null) Parent.AddChild(this);
}
}
收到元数据后,只需要再次触发渲染,并在
推荐阅读
- javascript - 如何通过解析字符串生成树结构?
- python - 用标签(x)预测机器学习目标(y),然后用目标计算标签
- python - 合并/合并/连接两个数据帧,根据索引从第二个数据帧中删除重复行
- firebase - 错误:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:[core/duplicate-app] 一个名为“[DEFAULT]”的 Firebase 应用程序已经存在
- python - 根据列值列表删除多行
- excel - 计算公式时如何使用excel VBA将公式复制到相邻单元格(使用相对引用)?
- java - 连接丢失后,Hibernate 自动与 sql-server 重新连接
- php - 如何在 127.0.0.1/ 上访问不带扩展名的 .html 或 .php 文件
- r - 如何在 pca biplot 中显示观察结果?
- ios - 编译器不支持此 SDK。请选择与 SDK 匹配的工具链