在我们从父组件传参数给子组件时,可以通过子组件定义的[Parameter]特性的公开属性进行传值,但是当我们需要传递多个值的时候,就需要通过[Parameter]特性定义多个属性,有没有更简便的方式? 我们可以使用定义 IDictionary<string,object>类型的参数,并使用[Parameter(CaptureUnmatchedValues =true)]特性进行标注,这样在父组件中嵌套子组件时,可以任意的传递参数。 子组件:
<h3>ParameterChild</h3>
<ul>
@if (Parameters != null)
{
@foreach (var item in Parameters)
{
<li>key=@item.Key,value=@item.Value</li>
}
}
</ul>
@code {
[Parameter(CaptureUnmatchedValues = true)]
public Dictionary<string, object>? Parameters { get; set; }
}
我们在子组件中将所有参数展示出来,用于验证参数是否传递成功 父组件:
@page "/demoPage"
@rendermode InteractiveAuto
<h3>DemoPage</h3>
<ParameterChild class="123" x1 ="2"></ParameterChild>
@code {
}
运行结果:
我们通过运行结果可以看到,参数被正确的传递到了子组件