C# Blazor 学習メモ (1): Blazor の基本構文、コンポーネント化、ライフサイクル

序文

ここではBlazorの基本的な構文と簡単なコンポーネント化について説明します。

Blazor の共通構文の概要

基本的な文法

ルーティング

@ページ

ルーティングの場所

@page "/fetchdata"

ページ要素の条件付き生成

@if / else

@if (forecasts == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <table class="table">
        <thead>
            <tr>
                <th>Date</th>
                <th>Temp. (C)</th>
                <th>Temp. (F)</th>
                <th>Summary</th>
            </tr>
        </thead>
    </table>
}

@ために

@for(var i = 0;i< 10; i++)
{
    <text>我是text @i</text>
}

@foreach

@foreach (var forecast in forecasts)
            {
                <tr>
                    <td>@forecast.Date.ToShortDateString()</td>
                    <td>@forecast.TemperatureC</td>
                    <td>@forecast.TemperatureF</td>
                    <td>@forecast.Summary</td>
                </tr>
            }

縛る

パラメータバインディング(代入、一方向)

<input title="@Title" value="@Value"  />

@code {

    [Parameter]
    public string Title{ get; set; }

    [Parameter]
    public string Value { get; set; }



}

パラメータバインディング(双方向)

<input @bind="Title" />

@code {
    public string Title{ get; set; }
}

イベントバインディング

<button @onclick="ShowTest"/>

@code {
    public void ShowTest()
    {
        Console.WriteLine("我被按钮点击了");
    }
}

辞書バインディング @attributes

コントロールのプロパティ バインディングを簡素化する


<input @attributes="InputList" />
//等价于 <input title="我的标题" value = "10" />
@code {
    
    

    public Dictionary<string, object> InputList {
    
     get; set; } = new Dictionary<string, object>()
    {
    
    
        {
    
    "title","我的标题"},
        {
    
    "value","10"}
    };
}


コンポーネント化

  • コンポーネント化できるのはカミソリだけです
  • Razor ファイル名の最初の文字は大文字にする必要があります
  • 注入は必要なく、コンポーネントを直接使用できます。したがって、ファイル名の競合を避けるために、名前付けを標準化する必要があります。

使い方

ここに画像の説明を挿入

@Parameter パラメータのインジェクション

パラメータインジェクションは複数のパラメータをサポートします

  • 一般的なデータ型
  • リストタイプ
  • アクションの委任
@code {
    
    

    [Parameter]
    public string Title{
    
     get; set; }

    [Parameter]
    public string Value {
    
     get; set; }



    [Parameter]
    public List<string> TestList {
    
     get; set; } = new List<string>();


}

使用

<Test Title="我是测试的标题" Value="数值" TestList="@strList"/>

@code{
    
    
    public List<string> strList = new List<string>()
    {
    
    

    };

    protected override Task OnInitializedAsync()
    {
    
    
        for(var i = 0;i < 10; i++)
        {
    
    
            strList.Add("我是标题" + i);
        }
        return base.OnInitializedAsync();
    }


}

折り返し電話

コンポーネント宣言コールバック

内部テスト.カミソリ

    [Parameter]
    public EventCallback<string> OnClick{
    
     get; set; }
    //string是回调的返回参数

コンポーネントインジェクションコールバック

参照コンポーネント


<Test  OnClick="TestBtn"/>

@code{
    
    


	//注意,注入的函数的参数和回调的参数要保持一致
    public void TestBtn(string msg)
    {
    
    
        Console.WriteLine("我接收到了回调"+msg);
    }

}

コンポーネントがコールバックを起動する

テストかみそり


<button @onclick="ShowTest"/>
@code {
    
    



    [Parameter]
    public EventCallback<string> OnClick{
    
     get; set; }

	//通过按钮事件触发回调,这样引用的页面就会触发回调函数
    public void ShowTest()
    {
    
    
        OnClick.InvokeAsync("点击回调函数");
    }

}

直接制御 @ref

@ref を使用してコンポーネント要素を直接制御する

テストは私たちが定義したコンポーネントです

//通过@ref直接使用组件
<Test @ref="myTest"  OnClick="TestBtn"/>

@code{
    
    
	//先声明组件
    private Test myTest {
    
     get; set; }

	//通过某种方式调用组件,我这里是用按钮点击
    public void TestBtn(string msg)
    {
    
    
        myTest.Title = "我直接操控修改了Title";
        myTest.TestBtn();
        Console.WriteLine("我接收到了回调"+msg);
    }

}

ライフサイクル

アプリの初期段階:

このフェーズでは、Blazor アプリケーションが初期化され、必要なリソースが読み込まれます。

  • OnInitializeAsync:
    • アプリケーションの初期化時に呼び出され、通常はいくつかの初期化操作を実行します。
      コンポーネント レンダリング フェーズ: このフェーズでは、コンポーネントがレンダリングされ、ユーザー インターフェイスに表示されます。
  • OnParametersSet:
    • コンポーネントが新しいパラメーター値を受け取った後に呼び出され、このメソッドでパラメーター関連の操作を実行できます。
      OnAfterRender: コンポーネントが画面にレンダリングされた後に呼び出され、DOM 操作に関連する操作をこのメソッドで実行できます。

ライフサイクルフックフェーズ:

この段階で、Blazor は、特定の操作を実行するために使用できる特定のライフサイクル フック メソッドをいくつか提供します。

  • 初期化時:
    • コンポーネントの初期化が完了した後に呼び出され、このメソッドでいくつかの初期化ロジックを実行できます。
  • OnAfterRenderAsync:
    • コンポーネントが画面にレンダリングされた後に呼び出され、このメソッドで非同期操作を実行できます。
  • OnParametersSetAsync:
    • コンポーネントが新しいパラメーター値を受け取った後に呼び出され、このメソッドで非同期操作を実行できます。

アプリの終了フェーズ:

この段階で、Blazor アプリケーションは終了し、クリーンアップされます。

  • 私たちは以下のものを処分します:
    • コンポーネントが DOM から削除されるときに呼び出され、このメソッドでいくつかのクリーンアップ ロジックを実行できます。

デバッグ

ホットリセット

ここに画像の説明を挿入

コンソール出力

JS の代わりに C# が使用されるためです。そのため、JS の console.log メソッドを直接使用することはできません。ただし、C# の Console.WriteLine() を使用することはできます。

実行中のコンソールに印刷されます

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44695769/article/details/132021920