前回
今回はコンポーネントを動的に追加・削除してみたいと思います。
環境
OS | macOS 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を書く必要はほとんど無くなりそうです。