Blazor University (3)组件 — 创建组件

原文链接: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/>

9a785bbf5fcf79e3cd6852e5a275f1a1.png

在另一个页面中嵌入页面时,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?" />

现在运行应用程序,我们将看到以下内容。

15f2c5fc596379c1b87069d73ff253fd.png

参考资料

[1]

源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/Components/CreatingAComponent

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值