Open3

Blazor殴り書き

sakura-engsakura-eng

UIコンポーネントの継承

コンポーネントをラップするとParameter属性を必要分定義しなければいけないが、継承を行うことで、UIやロジックのみのカスタマイズで事足りる。

コードサンプル

// razor
@inherits MudTextField

@RenderFunc()
// razor.cs
public partial class CustomComponent : MudTextField
{
   RenderFragment RenderFunc() => builder => base.BuildRenderTree(builder);
}

sakura-engsakura-eng

Blazor Web Assemblyライフサイクル

SetParametersAsync

パラメータが設定されたときに発火。
ParameterViewクラスを引数に持ち、
継承することでパラメータに応じて処理を決定することができる。

OnInitialized(Async)

コンポーネントの初期化時に発火。
継承することで初期化処理の実装ができる。

OnParametersSet(Async)

コンポーネントがOnInitialized(Async)で初期化された後呼び出される。
パラメータ値が変更されていない場合でも呼び出し可能なので、
パラメータの状態に応じて処理を決定することができる。

OnAfterRender(Async)

コンポーネントがレンダリングされ、UIが更新された後発火。
bool型のfirstRenderを引数に持ち、
JavaScriptを呼び出したい場合や、初回レンダリング時の実装ができる。

sakura-engsakura-eng

パフォーマンス改善

CascadingParameterのIsFixed

デフォルトではfalse。この場合すべての受信者が更新通知に登録される。