中文版

从父组件应用一组已更新的参数之后。
为级联参数应用已更新的值之后。
通知事件并调用其自己的某个事件处理程序之后。
在调用其自己的 StateHasChanged 方法后

英文版

After applying an updated set of parameters from a parent component.
After applying an updated value for a cascading parameter.
After notification of an event and invoking one of its own event handlers.
After a call to its own StateHasChanged method (see ASP.NET Core Razor component lifecycle).

1.老爸把新的参数传给我了 实际上好像是老爸重新呈现了,儿子是否呈现要看能否判断参数是否变动。若是传递了一个类什么的,十有八九认为参数变动了,会重新呈现
儿子:

<h1>俺是儿子</h1>
<hr />
这是老爸给我的:@FatherPara
@code {
    [Parameter]
    public string? FatherPara{ get; set; }
}

老爸

@page "/"
<button @onclick="()=>Count++">儿子动一动</button>
<CC FatherPara="@Count.ToString()"></CC>
@code {
    int Count = 0;

}

2.级联参数的值变了
先祖

@page "/"
<button @onclick="()=>Count++">后辈动一动</button>
<CascadingValue Value="Count">
    <CC></CC>
</CascadingValue>
@code {
    int Count = 0;

}

**调用了

子孙

<h1>俺也许是十八代孙子</h1>
<hr />
这是祖先给我的:@Para
@code {
    [CascadingParameter]
    public int  Para{ get; set; }
}

3.通知事件,如@onclick啥的,呈现自己

@page "/"
<button @onclick="()=>Count++">自己动一动</button>
@Count
@code {
    int Count = 0;
}

4.调用StateHasChanged方法,呈现自己

@page "/"
<button @onclick="OnClickAsync">自己动一动</button>
<button @onclick="()=>OnClickAsync(3)">自己动一动</button>
@Count
@code {
    int Count;

    async Task OnClickAsync()
    {
        for (int i = 0; i < 3; i++)
        {
            Count++;
            StateHasChanged();
            await Task.Delay(500);
        }
    }
    async Task OnClickAsync(int times)
    {
        for (int i = 0; i < times; i++)
        {
            Count++;
            StateHasChanged();
            await Task.Delay(500);
        }
    }
}

其他时候,俺自巍然不动。若设置ShouldRender返回false,呈现以后,我一动不动。

 protected override bool ShouldRender()
 {
     return false;
 }