Blazor University 组件 — 创建组件
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Blazor University 组件 — 创建组件相关的知识,希望对你有一定的参考价值。
原文链接:https://blazor-university.com/components
组件
所有呈现的 Blazor 视图都来自 ComponentBase
类,这包括布局、页面和组件。
Blazor 页面本质上是一个带有 @page
指令的组件,该指令指定浏览器必须导航到的 URL 才能呈现它。事实上,如果我们比较生成的组件代码和页面代码,差别很小。可以在文件夹 obj\\Debug\\netcoreapp3.0\\Razor\\Pages 中的 Counter.razor.g.cs 中找到以下生成的源代码。
namespace MyFirstBlazorApp.Client.Pages
[Microsoft.AspNetCore.Components.LayoutAttribute(typeof(MainLayout))]
[Microsoft.AspNetCore.Components.RouteAttribute("/counter")]
public class Counter : Microsoft.AspNetCore.Components.ComponentBase
protected override void BuildRenderTree(Microsoft.AspNetCore.Components.RenderTree.RenderTreeBuilder builder)
// Code omitted for brevity
private int counter = 42;
private void IncrementCounter()
counter++;
[Microsoft.AspNetCore.Components.RouteAttribute("/counter")] 标识页面的 URL。
[Microsoft.AspNetCore.Components.LayoutAttribute(typeof(MainLayout))] 标识要使用的布局。
事实上,由于页面只是装饰有附加属性的组件,因此如果您更改默认 Blazor 应用程序的 Pages/Index.razor 文件,则可以将 Counter 页面嵌入为组件。
@page "/"
<h1>Hello, world!</h1>
Welcome to your new app.
<Counter/>
在另一个页面中嵌入页面时,Blazor 将其视为一个组件。嵌入页面上的 LayoutAttribute
将被忽略,因为 Blazor 已经有一个显式容器 - 包含它的父组件。
创建组件
源代码[1]
在客户端应用程序中创建一个名为 Components 的新文件夹。这不是一个特殊的名称,我们可以选择任何我们想要的名称。
创建新的 Components 文件夹后,在其中创建一个名为 MyFirstComponent.razor 的文件并输入以下标记。
<div>
<h2>This is my first component</h2>
</div>
现在编辑 Index.razor 文件。此时,我们可以使用完全限定名称引用组件:
<CreatingAComponent.Client.Components.MyFirstComponent/>
或者编辑 /_Imports.razor 并添加 @using CreatingAComponent.Client.Components
。这里的 using 语句级联到所有 Razor 视图中——这意味着使用 /Pages/Index.razor 中的新组件的标记不再需要命名空间。
@page "/"
<h1>Hello, world!</h1>
<MyFirstComponent/>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
现在运行应用程序,我们将看到以下内容。
参考资料
[1]
源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/Components/CreatingAComponent
以上是关于Blazor University 组件 — 创建组件的主要内容,如果未能解决你的问题,请参考以下文章
Blazor University (45)依赖注入 —— 将依赖项注入 Blazor 组件
Blazor University (17)使用 RenderFragments 模板化组件
Blazor University (11)组件 — 替换子组件的属性