组件,英文称之为Component,包括普通页面,布局页,用户控件等.
直接看官方文档, Blazor组件的生命周期按从前往后分为以下几个阶段:
- SetParametersAsync,接受到参数,初始化之前。
- OnInitialized,初始化之后。
- OnInitializedAsync,初始化之后(需要处理异步方法的时候用到)。
- OnParametersSet,设置完参数之后。
- OnParametersSetAsync,设置完参数之后(需要处理异步方法的时候用到)。
- OnAfterRender,组件呈现之后。
- OnAfterRenderAsync,组件呈现之后(需要处理异步方法的时候用到)。
对比之前的WebForm,这个显然已经算很少了,而且还分成了同步和异步两种操作。不过很奇怪的是为什么参数的处理要分别放在初始化的前后,直观理解的话,OnParametersSet和OnParametersSetAsync这两个事件是可以去掉的。当然框架肯定有她自己的考虑,对于笔者这个Blazor初学者来说肯定有考虑不到的地方。
所有的事件也可以在ComponentBase里面找到定义,这个也是所有组件的基类:
值得注意的是,这里面并没有Dispose方法,根据文档的介绍,需要单独使用@implements指令来声明。
@using System
@implements IDisposable
...
@code {
public void Dispose()
{
...
}
}
SetParametersAsync
最早的事件,支持异步操作,她的定义如下:
public virtual Task SetParametersAsync(ParameterView parameters);
ParameterView包含了所有的参数,主要有URL里面的参数以及父组件通过属性传递过来的参数,可以通过foreach遍历里面的值,也可以通过GetValueOrDefault方法根据参数名取值,比如你可以这样: