中文版
从父组件应用一组已更新的参数之后。
为级联参数应用已更新的值之后。
通知事件并调用其自己的某个事件处理程序之后。
在调用其自己的 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;
}