再学Blazor——组件

Blazor 应用基于组件,组件可以复用和嵌套。本文内容如下:

  • 组件类
  • 组件嵌套
  • 组件参数
  • 组件对象

1. 组件类

所有组件都是继承 ComponentBase 组件基类,razor 文件默认继承 ComponentBase 类。 ComponentBase 实现组件的最低抽象,IComponent 接口。 ComponentBase 定义基本功能的组件属性和方法,例如,处理一组内置组件生命周期事件。

//HTML 写法
MyComponent.razor

<div>Hello Known!</div>
//C# 写法
class MyComponent : ComponentBase
{
    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.Div("Hello Known!");
    }
}

2. 组件嵌套

组件可以包含其他组件。用 HTML 语法,组件的标记类似于 HTML 标记,其中标记的名称是组件类型。

//HTML 写法
MyApp.razor

<MyComponent />

C# 高级写法是通过扩展方法来实现的。

//C# 写法
class MyApp : ComponentBase
{
    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.Component<MyComponent>().Build();
    }
}

3. 组件参数

Blazor 应用是由若干组件拼搭而成,有些组件结构相同,数据不同,这样的组件就需要添加组件参数属性将数据传递给组件。组件参数需满足如下条件:

  • 需要包含 [Parameter] 特性
  • 必须是 public 的属性
class MyComponent : ComponentBase
{
    [Parameter] public string? Title { get; set; }
    //子内容呈现片段
    [Parameter] public RenderFragment? ChildContent { get; set; }

    protected override void BuildRenderTree(RenderTreeBuilder builder) { ... }
}

下面是组件参数的使用示例

//HTML 写法
MyApp.razor

<div>
    <MyComponent Title="组件1" />
    <MyComponent Title="组件2">
        子内容呈现
    </MyComponent>
</div>
//C# 写法
class MyApp : ComponentBase
{
    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.Div(attr =>
        {
            builder.Component<MyComponent>().Set(c => c.Title, "组件1").Build();
            builder.Component<MyComponent>()
                   .Set(c => c.Title, "组件2")
                   .Set(c => c.ChildContent, b => b.Text("子内容呈现"))
                   .Build();
        });
    }
}

4. 组件对象

组件是继承 ComponentBase 的一个类,如果要访问组件的方法,必须获取组件的对象实例。若要捕获组件对象实例,请执行以下操作:

  • 向子组件添加 @ref 特性
  • 定义与子组件类型相同的字段
//HTML 写法
MyApp.razor

<div>
    <MyComponent @ref="component" Title="组件1" />
</div>

@code {
    private MyComponent? component;
}

C# 高级写法是在组件建造者 ComponentBuilder 类的 Build 方法中通过 AddComponentReferenceCapture 方法来捕获组件对象实例,该类不是 Blazor 框架类,后续将介绍该类的具体实现。

//C# 写法
class MyApp : ComponentBase
{
    private MyComponent? component;

    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.Div(attr =>
        {
            builder.Component<MyComponent>()
                   .Set(c => c.Title, "组件1")
                   .Build(value => component = value);
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Blazor Leaflet组件是一套在Blazor上集成的Leaflet地图库的组件。Leaflet是一个开源的JavaScript地图库,可以用于创建互动式、响应式的地图应用程序。 Blazor是由Microsoft开发的一个用于构建Web应用程序的开源框架。它允许开发者使用C#语言来编写客户端代码,同时在浏览器环境中运行。 Blazor Leaflet组件将Leaflet地图库的功能嵌入到Blazor应用程序中,使开发者能够在Blazor应用程序中轻松地创建、呈现和交互Leaflet地图。通过使用Blazor Leaflet组件,开发者可以使用C#语言编写地图相关的逻辑,而无需编写JavaScript代码。 Blazor Leaflet组件提供了一系列的组件,如地图组件、标记组件、矢量图层组件等,用于方便地创建地图及其相关元素。开发者可以使用这些组件创建动态显示数据的地图,并通过与Blazor的数据绑定机制结合使用,使地图能够动态响应数据的变化。 此外,Blazor Leaflet组件还提供了丰富的事件处理功能,允许开发者在用户和地图之间进行交互。开发者可以为地图上的各个元素添加事件处理程序,并在用户与地图交互时执行相应的操作。 总而言之,Blazor Leaflet组件Blazor开发者提供了一个方便、高效的方式来创建地图应用程序。通过将Leaflet地图库与Blazor框架相结合,开发者可以使用熟悉的C#语言编写地图相关的逻辑,并享受Blazor的优势,如强大的数据绑定和组件化开发模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值