Lightning Blog
Blazor記事イメージ画像

【Blazor】 RenderFragmemtの使い方

更新日:2023/07/09
今回は、RenderFrangmentという機能の使い方について解説していきます。

    目次

  • RenderFragmentとは?
  • RenderFragmentを使ったコンポーネントを作成
  • コンポーネントを使ってみる

RenderFragmentとは?

セクション画像

簡単な例を用いて説明します。 例えば、下図のような2つのコンポーネントがあったとします。 このコンポーネントが異なっているのは、AとBの部分なので、赤と青の部分は共通化することができます。 AとBの部分は画面によって異なるので、ページ毎に決める必要があります。 ページ毎に異なる部分を変数として扱うことができるのがRenderFragmentです。

RenderFrangmentのイメージ
RenderFrangmentのイメージ

RenderFragmentを使ったコンポーネントを作成

セクション画像

早速ですが、RenderFragmentのコンポーネントを使用したコードを作成していきましょう。


@* RenderFragmentを使用したコンポーネント例 *@

<h3>RenderFragmentComponent</h3>

@* 実装先で内容を決める部分 *@
@ChildContent

@code {

    /// <summary>
    /// 実装先で指定するページの固有部分
    /// </summary>
    [Parameter]
    public RenderFragment ChildContent{ get; set; }

}


@code部分にRenderFragment型でChildContent(名前は何でもOKです)を宣言します。 その際、[Parameter]のアノテーションを忘れないように注意してください。 宣言できたら、実装先で内容を決めたいレイアウト部分に @ChildContentと書きます。これでRenderFragmentを使ったコンポーネントは完成です。


コンポーネントを使ってみる

セクション画像

このコンポーネントを使って、試しにページ作成してみます。


@* RenderFragmentを使用したコンポーネントの使用例 *@

@page "/renderfragmenttest"

<Blazor_RenderFragment.Components.RenderFragmentComponent>

    <ChildContent>

        <div>実装先のコンテンツ</div>

    </ChildContent>

</Blazor_RenderFragment.Components.RenderFragmentComponent>

先ほど作成したRenderFragmentComponentという子コンポーネントで全体を囲みます。 さらに、その中にパラメータで指定した変数名と同じタグChildContentで囲みます。 ここにページ固有の実装内容を書いていきます。

これで完成になります。それでは実行してみます。

完成イメージ
完成イメージ

うまく実装できているのが、確認できました。 RenderFragmentを利用すると、コードの再利用性が上がりますので、是非使ってみてください。


ブログ内の記事で書かれているサンプルコードは、GitHubから確認する事ができます。 是非参考にしてみてください。

この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?

合わせて読みたい

カード画像
@をエスケープする方法

Blazorにおいて、@記号は予約文字として扱われるため、文字列として表示する際にはエスケープが必要です。@をエスケープして表示するためには、@を2回連続して書くことで実現できます。この技術は、一般的なケースではあまり使用されないかもしれませんが、知っておくと便利な場面もあるでしょう。

更新日:2023/07/20

カード画像
属性スプラッティングの使い方

Blazorの属性スプラッティング機能は、コンポーネントに複数の属性を一括で適用し、コードの再利用性を向上させるための手段です。基本的には、@attributesを使用し、属性と値のペアを格納したIDictionary<string, object>型を渡します。非文字列型の属性値もサポートしており、コンポーネントでも属性スプラッティングが利用可能です。ただし、属性の優先度に注意が必要です。これにより、Blazorアプリケーションの開発効率と柔軟性が向上します。

更新日:2023/07/19

An error has occurred. This application may no longer respond until reloaded. Reload 🗙