Nexta Tech Blog
🔄

Blazorのレンダリングの仕組みとコンポーネントのライフサイクル

に公開

ネクスタの tetsu.k です。
基幹業務クラウド「SmartF」の開発に携わっています。

今回は、C#のBlazorについて調べました。
主にBlazorのライフサイクルに焦点を当てます。

はじめに

Blazorでは、画面をコンポーネントという部品の組み合わせで構築します。

各コンポーネントには「生まれる → 動く → 消える」というライフサイクルがあり、
そのタイミングで自動的にメソッドが呼ばれます。

この記事では、どのタイミングでどのメソッドが呼ばれるのかを解説します。

Blazor Serverで画面が表示される仕組み

Blazor Serverでは、以下の流れで画面が表示されます。

Blazor Serverでは、まず静的HTML(プリレンダリング)を表示し、次にSignalRで接続して動的に操作できるようになります。

コンポーネントのライフサイクル

上記の各段階で、コンポーネント内では以下のメソッドが呼ばれます:

シーケンス図のとおり、コンポーネントには「生まれる→動く→消える」のタイミングでメソッドが自動的に呼ばれます。

よく使うのは以下の4つです。

  • OnInitialized - 初期化
  • OnParametersSet - パラメータ受け取り後の処理
  • OnAfterRender - 画面表示後の処理(グリッドのデータ設定など)
  • StateHasChanged - 画面の再描画

詳しい実行順序は上のシーケンス図を参照してください。

※プリレンダリング:初回アクセス時にサーバーが静的HTMLを事前生成する仕組み

すべてのRazorコンポーネントは、基本的にComponentBase(基底クラス)を継承しています。
ライフサイクルの各メソッドは、ComponentBaseの定義から確認が可能です。

これらのメソッドの動きやタイミングを理解することが、
Blazor開発の第一歩となります。

サンプル

サンプルプロジェクトを用意しました。

GitHubサンプルコード

各ライフサイクルメソッドの実行順序をログで確認できます。

参考リンク

GitHubで編集を提案
Nexta Tech Blog
Nexta Tech Blog

Discussion