Blazor University (11)组件 — 替换子组件的属性

原文链接:https://blazor-university.com/components/replacing-attributes-on-child-components/

替换子组件的属性

源代码[1]

到目前为止,我们已经了解了如何创建代码生成的属性[2],以及如何捕获意外参数[3]。除了这两种技术之外,Blazor 还允许我们重写/替换子组件中的现有属性。

采取以下页面标记:

<ChildComponent first="consumer-value-1" second="consumer-value-2" />

它使用以下子组件:

<div @attributes=AllOtherAttributes>Right-click and inspect the HTML for this element to see the results!
</div>@code
{[Parameter(CaptureUnmatchedValues=true)]public Dictionary<string, object> AllOtherAttributes { get; set; }
}

正如我们之前在代码生成的属性[4]中看到的那样,ChildComponent 会将使用者提供的属性(第一个和第二个)捕获到我们的参数 AllOtherAttributes 中,并且对 @attributes=AllOtherAttributes 的调用将指示 Blazor 在 Dictionary<string, object> 中输出名称/值对。前面的代码将输出以下 HTML。

<div first="consumer-value-1" second="consumer-value-2">Right-click and inspect the HTML for this element to see the results!
</div>

替换子属性

如果我们想为 firstsecond 指定默认值以在使用者不提供它们时输出怎么办?如果未设置值,则可能很容易重写 SetParametersAsync[5] 并插入值,但有一种更简单的方法!

我们所要做的就是写出我们的默认值作为子组件标记的一部分,@attributes= 指令将使用使用者传递的任何值覆盖它们。因此,如果我们更改子组件以指定一些默认属性值,如下所示:

<div first="1" second="2" third="3" fourth="4"  @attributes=AllOtherAttributes>Right-click and inspect the HTML for this element to see the results!
</div>

然后我们可以像这样替换组件的那些默认值:

<ChildComponent first="consumer-value-1" second="consumer-value-2" />

这将呈现以下 HTML:

<div first="consumer-value-1" second="consumer-value-2" third="3" fourth="4">Right-click and inspect the HTML for this element to see the results!
</div>

我们的子组件将始终呈现其所有四个 HTML 属性,但也将允许使用者替换它们的值。

保护属性不被替换

在某些情况下,我们可能希望允许组件的使用者替换某些属性,但我们希望保护其他属性不被更改。例如:

<input class="form-control" type="number" @attributes=AllOtherAttributes />

在这个假设的 InputNumber 控件中,我们希望允许我们的使用者替换默认的 CSS 类属性,但不希望他们意外地将 typenumber 更改为 checkbox

在 Blazor 中,我们的 @attributes= 指令的位置很重要。指令之前的任何属性(在其上方或左侧)都可以由使用者替换其值,但在它之后(在其下方或右侧)的所有属性都受到保护,以免其值被替换。

鉴于以下标记:

<ChildComponentfirst="consumer-value-1"second="consumer-value-2"inserted="consumer-inserted-value" />

然后调整 @attributes= 在我们的 ChildComponent 中的位置将为我们提供以下输出:

// Example 1
<div@attributes=AllOtherAttributesfirst="1"second="2" />// Generated HTML
<divinserted="consumer-inserted-valuefirst="1"second="2" />
// Example 2
<divfirst="1"@attributes=AllOtherAttributessecond="2" />// Generated HTML
<divfirst="consumer-value-1"inserted="consumer-inserted-valuesecond="2" />
// Example 3
<divfirst="1"second="2"@attributes=AllOtherAttributes />// Generated HTML
<divfirst="consumer-value-1"second="consumer-value-2"inserted="consumer-inserted-value />

R.I.P. 默认值

记住哪些值优先的一种简单方法是使用“R.I.P.方法”。

@attributes= 指令将始终插入来自使用者的附加值,因此将 I 视为插入的含义。I 之前的每个属性值都可以替换(R),I 之后的每个属性值都受保护(P)。

<div first="1" second="2" @attributes=AllOtherAttributes third="3" fourth="4" />

8cb54dc11bc661f52ab30f645da62682.png

参考资料

[1]

源代码: https://blazor-university.com/components/replacing-attributes-on-child-components/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTPS实现原理

HTTPS实现原理 HTTPS&#xff08;全称&#xff1a;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础是SSL。其所用的端口号是443。…

C#使用ServiceController控制windows服务

C#中,使用ServiceController类控制windows服务,使用之前要先添加引用:System.ServiceProcess,然后在命名空间中引用:using System.ServiceProcess。下面举例获取本机的所有已安装的Windows服务和应用,然后查找某一应用活服务是否已经安装。 代码: using System; using S…

电信aep平台是什么意思_江苏天鼎证券:股票平台跳水是什么意思?股票为什么会跳水?...

相信很多新手在刚玩股票的时候会遇到很多的专业的基础知识不能理解&#xff0c;比如什么是跳水?为什么会跳水呢?接下来就为大家详细来说股票的跳水以及为何会跳水。一、股票平台跳水是什么意思?股票跳水通常指股价在较短的时间内&#xff0c;出现从高位下降到低位的现象。出…

mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项

MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案&#xff0c;以插件形式提供。MGR基于分布式paxos协议&#xff0c;实现组复制&#xff0c;保证数据一致性。内置故障检测和自动选主功能&#xff0c;只要不是集群中的大多数节点都…

python beautifulsoup4 table tr_python BeautifulSoup解析表

牧羊人nacy这是通用的工作示例(表数据)标记。它返回带有内部列的行的列表。第一行仅接受一个(表头/数据)。def tableDataText(table): rows [] trs table.find_all(tr) headerow [td.get_text(stripTrue) for td in trs[0].find_all(th)] # header row i…

clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?

【引言】今天有同事问了一个问题&#xff0c;在Oracle 11g下&#xff0c;为啥exp方式导出一个用户的数据表&#xff0c;在imp后却发现有些表并没有迁移过来。经查阅官方文档&#xff0c;发现和Oracle11g及12c 版本相对于10g&#xff0c;有一个新特性deferred_segment_creation(…

C# 读写二进制文件

读写二进制文件的一种选择是直接使用流类型&#xff1b;在这种情况下&#xff0c;最好使用字节数组执行读写操作。另一个选择是使用为这个场景定义的读取器和写入器&#xff1a;BinaryReader和BinaryWriter。使用它们的方式类似于使用 StreamReader 和 StreamWriter&#xff0c…

推荐系统(1)--splitting approaches for context-aware recommendation

开篇语&#xff1a; 大一的时候。在实验室老师和师兄的带领下。我開始接触推荐系统。时光匆匆&#xff0c;转眼已是大三&#xff0c;因为大三课甚是少。于是便有了时间将自己所学的东西做下总结。第一篇博客。献给过去三年里带我飞的老师和师兄们&#xff0c;感谢你们的无私帮助…

python 百度云文字识别 proxy_python使用百度文字识别功能方法详解

介绍python使用百度智能去的文字识别功能&#xff0c;可以识别截图中的文&#xff0c;登陆路验证码等等。&#xff0c; 登陆百度智能云&#xff0c;选择产品服务。选择“人工智能”---文字识别。点击创建应用。 如图下面有关于“文字识别”的各类信息&#xff0c;如通用文字识别…

Android性能优化典范(转)

本文转自&#xff1a;http://hukai.me/android-performance-patterns/ 2015新年伊始&#xff0c;Google发布了关于Android性能优化典范的专题&#xff0c;一共16个短视频&#xff0c;每个3-5分钟&#xff0c;帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Andr…

Xamarin效果第二十一篇之GIS中可扩展浮动操作按钮

在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR、测距和加载三维白模,今天再次对操作栏又一次修改了,直接放到了右下角可伸缩效果;啥也不说了都在效果里:添加支持圆角 ContentView:Xamarin.Forms.PancakeView再来Xamarin 社区工具包:Xamarin.CommunityToolkit再来看看最终…

【新版发布】ComponentOne 新增 .NET 6 和 Blazor 平台控件支持

ComponentOne Enterprise是葡萄城推出的一款内置 300 多种开发控件的 .NET控件集&#xff0c;可满足 WinForm、WPF、Blazor、ASP.NET MVC 等平台下的系统开发需求&#xff0c;提供表格数据管理、数据可视化、报表和文档等功能&#xff0c;被开发人员誉为“.NET开发的‘瑞士军刀…

Ruby如何成长成高性能系统构架

为什么80%的码农都做不了架构师&#xff1f;>>> 结束了一份Ruby为主的工作,想把个方面总结一下,这篇是关于系统性能方面的.以下数据都是简单回忆的数据,加之企业保密数据的需要,和精确数有些出入,仅供参考. 说起Ruby的性能,无论从官方到社区,都公认是劣于其它的框架…

ArcGIS 10.2数字化线状要素时自动拼接成一条线

&#xff08;1&#xff09;在已有线的基础上自动连接成一条线 数字化时&#xff0c;经常会碰到这种情况&#xff0c;不小心双击了&#xff0c;或者画到一半饿了&#xff0c;双击完成去吃饭了&#xff0c;回来继续画&#xff0c;该怎样去做呢&#xff1f; 一开始一直和捕捉和经典…

设置tableView的分割线从最左端开始

苹果原生的tableView的cell分割线默认是没有从最左端开始&#xff0c;有时候这样不免影响美观&#xff0c;有时也会有这样的需求&#xff0c;设置tableView的分割线从最左端开始&#xff1a; 不多说了&#xff0c;直接上代码吧&#xff1a; //分割线从顶端开始 --------适配iO…

java 定时 spring_Spring定时任务实现与配置(一)

朋友的项目中有点问题。他那边是Spring架构的&#xff0c;有一个比较简单的需要定时的任务执行。在了解了他的需求之后&#xff0c;于是提出了比较简单的Springquartz的实现方式。注意本文只是讨论&#xff0c;在已搭建完毕的Spring工程下&#xff0c;完成最简单的定时任务。第…

内核同步机制

内核中用于临界区保护下的互斥机制&#xff0c;它包括自旋锁、原子操作和信号量&#xff0c;三者保证了对临界资源访问的互斥型。 1.1 内核中的互斥机制 1.1.1 自旋锁 自旋锁用在多个CPU系统中。当一个线程在一个CPU上正使用资源&#xff0c;而另一个线程在另一个CPU上正忙等待…

makefile运行_NVDIA TX2入门 系列之三:运行Yolov3

上篇TX2安装完成OpenCV 3.4.0之后&#xff0c;基本软件包已经安装完成&#xff0c;本篇开始安装并运行大名鼎鼎的号称速度最快的目标识别分类算法Yolov3。Yolov3 是啥啊Yolov3是一款基于darknet深度学习框架的目标检测开源项目&#xff0c;目前已经发展到第3版本&#xff0c;即…

C#实现树的双亲表示法

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace 树的实现 {public partial class Form1 : Form{public Form1(){Init…

MySQL存储写入速度慢分析

一、存储结构分析MySQL存储结构图&#xff1a;解析&#xff1a;1、读操作&#xff1a;内存读-->cache缓存读-->磁盘物理读读取到的数据会按上述顺序往回送。2、写操作&#xff1a;内存数据直接写入cache缓存(非常快)-->写入disk由上可知&#xff0c;MySQL之所以读写速…