MyUtils

View on GitHub

Blazorについて

Blazorを仕事で使うこととなったため、仕方なく使い方をまとめる


基本的な考え方

Razor コンポーネントは、一連の同期および非同期のライフサイクル メソッド内の Razor コンポーネント ライフサイクル イベントを処理します。 ライフサイクル メソッドをオーバーライドして、コンポーネントの初期化およびレンダリング中にコンポーネントで追加の操作を実行できます。

公式ドキュメント

SetParametersAsync
OnInitialized{Async}
OnParametersSet{Async}

razorLifeCycle

コンポーネントの初期化 (OnInitialized{Async})

@page "/on-init"

<p>@message</p>

@code {
    private string? message;

    protected override void OnInitialized()
    {
        message = $"Initialized at {DateTime.Now}";
    }
}

protected override async Task OnInitializedAsync()
{
    await ...
}

他にもいろいろあるので、公式ドキュメントで確認すること

パラメーターが設定された後 (OnParametersSet{Async})

@page "/on-params-set"
@page "/on-params-set/{StartDate:datetime}"

<p>@message</p>

@code {
    private string? message;

    [Parameter]
    public DateTime StartDate { get; set; }

    protected override void OnParametersSet()
    {
        if (StartDate == default)
        {
            StartDate = DateTime.Now;

            message = $"No start date in URL. Default value applied (StartDate: {StartDate}).";
        }
        else
        {
            message = $"The start date in the URL was used (StartDate: {StartDate}).";
        }
    }
}


可変URL作成

「https://usefuledge.com/details/A」「https://usefuledge.com/details/B」
のように、URLの一部を可変にするには

// pageディレクティブをこんな感じで定義
@page "/details/{CodeID?}"

// codeディレクティブを以下で設定するだけ
[Parameter]
public string codeID {get; set;}

URLからパラメータを取得する場合

https://pacode.net/?languageID=8のように、URLパラメタを取得したい場合

// Pageディレクティブ
@page "/"

// codeディレクティブ
[Parameter]
[SupplyParameterFromQuery]
// String?とすることで、Nullを許容した文字列型になる
public String? languageID {get; set;}

SignalIRについて

ASP.NET SignalR は、リアルタイム Web 機能をアプリケーションに追加するプロセスを簡略化する ASP.NET 開発者向けのライブラリ

クライアントが新しいデータを要求するのをサーバーが待機するのではなく、
接続されているクライアントが使用可能になったときにすぐにサーバー コードでコンテンツをプッシュする機能です。

ユースケースとして以下のサーバーサイドから変更を通知して表示を更新したい場合などがあげられる