如何扩展 Blazor 组件?

Tom*_*man 7 blazor asp.net-blazor blazor-webassembly mudblazor

我目前正在使用 MudBlazor 并且非常喜欢它。

然而,我发现自己反复添加一些东西到像 CancellationTokens 这样的组件中,自己自定义模板。

有没有办法完全继承/扩展现有组件?

一种选择是创建一个新组件,其中包含我想要修改的组件的实例,并将所有参数添加到我的组件中并将它们映射回原始组件,但我觉得必须有更好的方法。

Bra*_*ugh 6

属性展开对于围绕其他组件创建包装器或更高级别的抽象非常方便:

<MudTextField Variant="@Variant" @attributes="@OtherAttributes"></MudTextField>

@code {
    [Parameter(CaptureUnmatchedValues = true)]
    public Dictionary<string, object> OtherAttributes { get; set; }

    [Parameter]
    // can even set your own defaults
    public Variant Variant { get; set; } = "Variant.Filled"
}
Run Code Online (Sandbox Code Playgroud)

您还可以创建自己的基础组件并用于@inherits共享逻辑和参数。