Blazorでコンポーネントを動的に追加・削除してみる

前回

今回はコンポーネントを動的に追加・削除してみたいと思います。

環境

OSmacOS Catalina 10.15.5
ターゲットフレームワーク.NET Core 3.1
開発環境Visual Studio Community 2019 for Mac (Preview)
プロジェクト種別Blazor Server

※プロジェクトは前回ものを使用しています。

コンポーネントを作成する

Sharedフォルダに「Component1.razor」というファイルを追加します。

次にファイルを以下のように編集します。

<div style="padding:1rem;margin:1rem;border: 1px solid gray;">
    <h3>コンポーネント</h3>
    <p>@Count</p>
</div>

@code {
    [Parameter]
    public int Count { get; set; }
}

Index.razorを編集する

Pages/Index.razorを以下のように編集します。

@page "/"

<h1>Hello, world!</h1>

Welcome to your new app.

<!-- ここから -->
<div style="background-color:#EEE; margin-top:1rem;">

    <button @onclick="Add">追加</button>
    <button @onclick="Remove">削除</button>

    @foreach (var item in items)
    {
        <!-- 今回はここでコンポーネントを呼び出す -->
        <Component1 Count="@item" />
    }

</div>

@code {
    private List<int> items = new List<int>();

    private void Add()
    {
        // リストに要素を追加する
        items.Add(items.Count + 1);
    }

    private void Remove()
    {
        if (items.Count > 0)
        {
            // リストの最後の要素を削除する
            items.RemoveAt(items.Count - 1);
        }
    }
}
<!-- ここまで -->

前回からの変更点は16行目となります。

ここで、作成したコンポーネントを呼び出すように変更します。

また、ついでにコンポーネントにパラメータ(Count)も渡してみます。

動作確認

早速、動作確認してみます。

実行(▶︎)すると、前回と同じ画面が表示されます。

「追加」ボタンを押してみます。すると、以下のようにコンポーネントが動的に追加されていきます。

「削除」ボタンを押すと、コンポーネントが動的に削除されていきます。

HTML要素と同じように簡単にコンポーネントも動的に追加・削除出来ました。

BlazorがあればJavascriptを書く必要はほとんど無くなりそうです。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA