Introduction

Blazor is an open-source web framework developed by Microsoft that allows developers to build interactive web applications using C# and .NET. Blazor uses a component-based architecture to create reusable and modular UI elements. Custom components are an essential part of building complex and reusable web applications. In this article, we will explore how to create custom components in Blazor using examples.

Prerequisites

Before we begin, ensure you have the following set up on your development environment:

Understanding Components in Blazor

Components in Blazor are similar to user controls in other web frameworks. They are self-contained pieces of code that contain both markup and logic. Components can be composed and nested to create complex UI elements. In Blazor, components can be created using Razor syntax or using C# code. There are two types of components in Blazor:

In this article, we'll focus on creating custom Razor components.

Step 1. Create a New Blazor Project

Let's start by creating a new Blazor project. Open Visual Studio and follow these steps:

Step 2. Add a Custom Component

In this example, we'll create a simple custom component that displays a welcome message with the ability to customize the name.

Step 3. Define the Custom Component

Now, let's define the content of our custom component. Open the "WelcomeMessage.razor" file and replace its content with the following code.

C#
@code {
    [Parameter] public string Name { get; set; } = "Guest";
}
<h3>Welcome, @Name!</h3>

In this code, we have a simple Razor component with a parameter named "Name." The parameter represents the name of the user to display in the welcome message. We've set a default value of "Guest" in case the name is not provided.

Step 4. Using the Custom Component

Now that we have our custom component defined let's use it in one of our existing Blazor pages. Open the "Index.razor" file located in the "Pages" folder and add the following line at the top of the file to import the "WelcomeMessage" component.

C#
@page "/"

@using YourAppName.Components

Next, add the following code within the existing <div> tag in the "Index.razor" file:

C#
<WelcomeMessage Name="Amit Mohanty" />

This line of code will render the "WelcomeMessage" component with the name "Amit Mohanty".

Step 5. Build and Run the Application

With the custom component in place, we can now build and run the application to see it in action.

How to Create Reusable Components?

One of the main benefits of using custom components in Blazor is the ability to create reusable UI elements. To create a reusable component, you can define it in a separate file and import it into other components as needed. Here's an example of a reusable component that displays a button.

Create a new component named as SubmitButton and add the below code.

C#
<button class="@ButtonClass" @onclick="OnClick">@ButtonText</button>

@code {
    [Parameter]
    public string ButtonText { get; set; } = "Button";

    [Parameter]
    public string ButtonClass { get; set; } = "btn-primary";

    [Parameter]
    public EventCallback<MouseEventArgs> OnClick { get; set; }
}

This component takes three parameters: the button text, the button class, and a callback that is triggered when the button is clicked. The default values for the button text and class are set in the component, but they can be overridden when the component is used.

To use this component in your application, you can add the following code to a Razor page.

C#
<SubmitButton ButtonText="Click Me" ButtonClass="btn-success" OnClick="HandleClick" />
@code {
    private async Task HandleClick(MouseEventArgs args)
    {
        // Handle the button click event
    }
}

This will render a button with the text "Click Me" and the class "btn-success". When the button is clicked, the HandleClick method will be called.

Conclusion

Custom components are a powerful feature of Blazor that allow developers to create reusable and modular UI elements. By creating custom components, developers can build complex web applications more efficiently and with greater flexibility. In this article, we explored how to create custom components in Blazor using examples. We hope this article has been helpful in understanding how to create custom components in Blazor.