实际项目当中经常会有很多重复使用的组件,她们具有相同的布局,只是填充的内容不一样,如果不停的复制粘贴也是件费劲的事情,而且也不好维护和更新,这时候就可以考虑使用模板化组件。
比如以下Bootstrap自带的Card组件:
红色框的部分就是公共的部分,我们可以把她们封装到模板化组件里。
1. RenderFragment
模板化组件需要用到RenderFragment类型的参数。对于上面的例子,我们可以分成Header和Body两个部分,如下:
<!--Card组件-->
<div class="card" style="width: 18rem;">
<div class="card-header">
@Header
</div>
<ul class="list-group list-group-flush">
@Body
</ul>
</div>
@code {
[Parameter]
public RenderFragment Header { get; set; }
[Parameter]
public RenderFragment Body { get; set; }
}
调用的时候可以这样写:
<Card>
<Header>
Featured
</Header>
<Body>
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="li