#はじめに
この記事は部品コンポーネントへ変数を渡し、部品コンポーネントの中で渡された変数が変更された際、渡し元の変数も自動的に変更させる事を実現するまでの記事です。
#準備
以下のように、ボタンを押したら渡された変数の文字列が変更されるだけの部品コンポーネントを作りました。
部品コンポーネント
<h3>Component1</h3>
<p>部品コンポーネント内の値 : @Test1</p>
<button @onclick="ButtonOnClick">クリック</button>
@code {
[Parameter]
public string Test1 { get; set; }
private void ButtonOnClick()
{
Test1 = "ボタンが押されました。";
}
}
呼び出し元
@page "/test"
<p>呼び出し元の値 : @Test1</p>
<Component1 Test1=@Test1/>
@code {
private string Test1 { get; set; } = "ボタン押される前の文字列";
}
#呼び出し元の変数の値の変更方法
部品コンポーネント側で、バインドしたい変数のEventCallback
を追加する。この時の変数名の名前は〇〇〇Changed
とする必要がある。(今回はTest1
の変数をバインドしたいためTest1Changed
としている。)
Test1
の値が変更されるタイミングでTest1Changed
を実行する事で、呼び出し元の変数も自動で変わってくれる。
また、呼び出し元もバインドしたい変数に@bind-
をつける必要がある。
部品コンポーネント
<h3>Component1</h3>
<p>部品コンポーネント内の値 : @Test1</p>
<button @onclick="ButtonOnClickAsync">クリック</button>
@code {
[Parameter]
public string Test1 { get; set; }
[Parameter]
public EventCallback<string> Test1Changed { get; set; }
private async Task ButtonOnClickAsync()
{
Test1 = "ボタンが押されました。";
await Test1Changed.InvokeAsync(Test1);
}
}
呼び出し元
@page "/test"
<p>呼び出し元の値 : @Test1</p>
<Component1 @bind-Test1=@Test1>
</Component1>
@code {
private string Test1 { get; set; } = "ボタン押される前の文字列";
}
[Blazor関連のリンク] [Blazor WebAssembly プロジェクト作成(認証あり)](https://qiita.com/pero_88/items/be142d5d0ba92e5c91d0) [Blazor WebAssembly 初期プロジェクト構成の入門](https://qiita.com/pero_88/items/ced1028ad536a43fec1d) [Blazor WebAssembly Postgresを使うまで](https://qiita.com/pero_88/items/23e88a1d2bc3659b9946) [Blazor WebAssembly コードビハインド](https://qiita.com/pero_88/items/be871f4ac63868f048f0) [Blazor WebAssembly InputSelectの使い方](https://qiita.com/pero_88/items/3eddcd1aedf8bbc8441b) [Blazor WebAssembly 部品コンポーネントへ渡した変数とのバインド](https://qiita.com/pero_88/items/f5d70b41337ca6d08dd1) [Asp.net core Identity 翻訳開始まで](https://qiita.com/pero_88/items/44a66b7ac217f674a7f3) [Blazor WebAssembly 使いまわしが利く部品(表)を作る。](https://qiita.com/pero_88/items/5e1e3f68d50d941ee36a)