blazor - 如何在 blazor 组件中呈现模板?
问题描述
我试图通过 c# 在 blazor 中呈现模板。
我浏览过微软文档。他们建议使用 RenderFragment。但我无法获得实现这一目标的正确方法。
解决方案
定义一个简单的 FilmList 组件,它只循环传入的电影。 FilmTemplate 属性是一个模板参数。模板参数使模板化组件与普通组件不同。
模板参数允许您定义组件的一个区域,该区域将在渲染时使用组件使用者提供的模板。它们可以定义为 RenderFragment 或 RenderFragment 。我稍后会介绍通用版本。
FilmList.razor:
<div>
@foreach (var film in Films)
{
@FilmTemplate(film)
}
</div>
@code{
[Parameter] RenderFragment FilmTemplate { get; set; }
[Parameter] IReadOnlyList Films { get; set; }
}
用法:
<FilmList Films="@Films">
<FilmTemplate>
<div>@context.Title (@context.YearReleased)</div>
</FilmTemplate>
</FilmList>
@code {
public List Films { get; set; } = new List {
new Film("Pulp Fiction", "1994", "pulp-fiction.jpg"),
new Film("Bad Boys II", "2003", "bad-boys2.jpg"),
new Film("The Fast and the Furious", "2001", "tfatf.jpg"),
new Film("The Greatest Showman", "2017", "greatest-showman.jpg")
};
}
为了使用 FilmList 组件,我们必须为电影定义一个模板。这是使用与模板参数名称匹配的元素完成的,在我们的例子中。
来源:https ://visualstudiomagazine.com/articles/2018/12/01/blazor-templated-components.aspx
希望这会有所帮助...如果您有任何问题或不清楚的地方,请随时提问。
推荐阅读
- php - /broadcasting/auth 处 Laravel 419 页面过期错误,但添加了 csrfToken LARAVEL NOTIFICATIONS
- php - 关于意外 else 语句错误的问题
- html - 滚动按钮未居中
- php - 使用 Cron 运行的 PHP 脚本检索我的 Google 日历事件
- javascript - 我有一个数字,我想在每个数字上加上一个跨度。我必须在 javascript 中执行此操作
- reactjs - 如何将 Redux 实现到已经有 props 的功能组件?
- node.js - 有没有办法复制 node_modules 而不是每次都为 create-react-app 安装它们?
- java - 查询 sqlite 数据库有 outofboundException
- youtube - 如何获取 YouTube 频道表情符号列表?
- javascript - 函数将其他函数和少数其他参数作为参数。将参数绑定到嵌套函数并返回接收到的函数