首页 > 其他分享 >Blazor学习记录六_模版化组件_渲染模式_CSS隔离和代码隔离

Blazor学习记录六_模版化组件_渲染模式_CSS隔离和代码隔离

时间:2024-03-26 20:57:58浏览次数:15  
标签:set 隔离 get 渲染 RenderFragment 组件 Blazor public CSS

17.模版化组件

在组件中放置一个可渲染的代码片段供外部调用者来传入要渲染的内容及渲染样式,这样的组件就叫做模版化的组件。一般是一个支持泛型的组件,目标为消费者封装重复使用的通用性良好的UI组件。比如一个用来给用户呈现表格数据的表格组件。

示例组件 GenaricTable.razor 代码如下:

@typeparam TData

@if(Data is not null)
{
    <table class="table">
        <thead>
            <tr>
                @HeaderTemplate
            </tr>
        </thead>
        <tbody>
            @foreach(var item in Data)
            {
                <tr>
                    @RowTemplate?.Invoke(item);
                </tr>
            }
        <tbody>
    </table>
}

@code
{
    [parameter]public IEnumerable<TData>?  Data{get;set;}
    [parameter]public RenderFragment<TData>? RowTemplate{get;set;}
    [parameter]public RenderFragment? HeaderTemplate{get;set;}
}

消费者代码如下:

@Page "/genaric-table"

<GenaricTable Data="Users">
    <RowTemplate>
        <td>@context.Id</td>
        <td>@context.Name</td>
    </RowTemplate>
</GenaricTalbe>

@{
    class user
    {
        public int Id{get;set;}
        public string? Name{get;set;}
    }
    IEnumerable<User> Users => new List<User>
    {
        new(){Id=1,Name="张三"},
        new(){Id=2,Name="李四"}
    }
}
  • 说明:
    RenderFragment 或 RenderFragment 可渲染片段,实际就是委托
    如果是泛型可渲染片段如 RenderFragment<TData>? RowTemplate{get;set;} 则在调用时,Blazor会为调用者使用的地方自动引入一个叫 @context 的数据上下文变量,它即是该泛型委托的封闭类型的一个约定实例。

标签:set,隔离,get,渲染,RenderFragment,组件,Blazor,public,CSS
From: https://www.cnblogs.com/hrx521/p/18097488

相关文章

  • css实现弹出的div显示在屏幕中间
    主要代码如下:.info{width:90vw;height:102vw;display:block;position:fixed;z-index:999;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:14px;}.info-header{......
  • CSS 样式
    一.CSSCSS层叠样式表(CascadingStyleSheets):能够对网页中元素的排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,简单来说,美化页面二.CSS的引入方式行内式:通过元素开始标签的style属性注入,语法为style="样式名:样式值;样式名......
  • 37.html+css+js网页设计实例/“音乐”酒吧主题介绍/web前端期末大作业/
    一、前言本实例以“音乐”酒吧为主题设计,响应式web,应用html+css+js,包括图片轮翻效果、视频、音频、留言板等,供大家参考。【关注作者|获取更多源码(2000+个Web案例源码)|优质文章】;您的支持是我创作的动力!看到这里就【点赞收藏博文】,Web开发、课程设计、毕业设计有兴趣的联系我交......
  • css设置按钮心跳收缩后,按钮文字上下抖动,如何解决?
    如题,给一个按钮写一个css心跳收缩动画后,按钮中的文字会上下抖动,解决方案为   will-change:transform;代码如下://按键呼吸特效使用class="pulse"@keyframespulse{0%{transform:scale(1);}25%{transform:scale(0.95);}50%{transfo......
  • 网页设计必备技能:如何用CSS盒子模型打造完美布局?
    在网络设计的世界里,盒子模型是构建网页布局的基石,只有理解了盒子模型,我们才能更好的进行网页布局。HTML中的每一个元素都可以看成是一个盒子,拥有盒子一样的外形和平面空间,它不可见、不直观,但无处不在,所以初学者很容易在这上面出问题。今天就让我们来深入了解一下盒子模型。一......
  • tailwindcss 默认的button按钮样式导致其他ui库,如antd、element等透明失效问题的终极
    我先说一下好消息,这个问题在官方层面已经准备解决了,并且在当前版本(3.4.1)的下一个正式版彻底解决。这里是原文:https://github.com/tailwindlabs/tailwindcss/pull/12735但截至目前24.3.26日,仍然没发布新版。官方的解决办法也很简单,就是降低优先级原来的:button,[type='button......
  • 我不想使用 CSS 样式,你知道在 HTML 中有什么标签可以加粗文本么
    网页设计过程中,我们经常会遇到需要加粗文本来凸显特定文本的情况。<b> 标签在强调文本时扮演着不可或缺的角色,它就像是我们语言中的语气词,虽微不足道,但能有效地抓住读者的注意力。1.基础语法什么是<b>标签<b> 标签是HTML中用于加粗文本的基础标签,它能够让包裹的文字......
  • 36.html+css+js网页设计实例/“美食”主题介绍/web前端期末大作业/
    一、前言本实例以“美食”为主题设计,应用html+css+js,包括图片轮翻效果、菜单导航、三级菜单、音频、留言板等,供大家参考。【关注作者|获取更多源码(2000+个Web案例源码)|优质文章】;您的支持是我创作的动力!看到这里就【点赞收藏博文】,Web开发、课程设计、毕业设计有兴趣的联系我......
  • 前端学习之css基本网格布局
    网格布局<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>网格布局</title><style>.a{/*grid网格布局*/display:grid;width:......
  • 3. CSS 列表和表格相关属性
    列表相关属性ul、ol、li标签中使用<style>ul{list-style-type:lower-roman;/*列表符号,常用值:none*/list-style-position:inside;/*列表符号位置*/list-style-image:url("路径");/*自定义列表符号*/list-......