tnblog
首页
视频
资源
登录

Blazor生命周期

676人阅读 2021/12/11 14:59 总访问:146584 评论:0 收藏:0 手机
分类: ASP.NET
1、组件初始化
当组件从其父组件收到其初始化参数后,将调用OnInitalizedAsync和OnInitialized。
在组件同步操作时,请重写OnInitalized
protected override void OnInitialized()
{
  
}
在组件执行异步操作时,请重写OnInitializedAsync
protected override Task OnInitializedAsync()
{
            
}
在预呈现Blazor Server应用时,会调用OnInitializedAsync两次;
初始以静态方式呈现组件;
当浏览器与服务器建立连接时会再次呈现组件
若防止OnInitializedAsync执行两次;
传入一个标识符,该标识符可以在预呈现期间缓存状态,并在预呈现检索状态;
在预呈现Blazor Server应用时,某些操作(如调用JavaScript)是不能执行的,因为尚未建立与浏览器的连接,在预呈现时组件可能需要以不同的方式呈现这时可以组件的
OnAfterRenderAsync生命周期事件仅在完全呈现组件并建立客户端连接后,才调用此事件。
2、设置参数之前
SetParametersAsync用来设置由呈现树中的父组件提供的参数;
public override async Task SetParametersAsync(ParameterView parameters)
{
            
}
ParameterView包含每次调用SetParametersAsync时的完整参数集。
SetParametersAsync的默认实现是将每个属性的值设置为在ParameterView中具有响应值的[Parmeter]特性或[CascadingParameter]特性。在ParameterView中,没有相应值将保
持不变。
如果未调用base.SetParametersAsync,则自定义代码以任何所需的方式解释传入参数值,例如不要求传入参数分配给类的属性。
3、设置参数之后
当组件已初始化并收到其父组件的第一组参数时;
当父组件重新呈现并提供参数时;
至少有一个参数已更改(基元为不可改变类型)
任何复杂类型的参数。(则会调用OnParametersSetAsync)
异步
protected override async Task OnParametersSetAsync()
{
    return base.OnParametersSetAsync();
}
同步
protected override Task OnParametersSetAsync()
{
    return base.OnParametersSetAsync();
}
4、组件呈现之后
当组件呈现之后,将调用OnAfterRender和AfterRender,此时将填充元素和元素组件引用。在此阶段,可以使用呈现的内容执行其他初始化步骤,如激活在呈现的Dom元素上操
作的第三方JavaScript库。
OnAfterRender和AfterRender参数作用如下:
在第一次呈现组件实例时,设置为true;
可用于确保禁止性一次初始化工作。
protected override async Task OnAfterRenderAsync(bool firstRender)
{
    return base.OnAfterRenderAsync(firstRender);
}
同步
protected override void OnAfterRender(bool firstRender)
{
    base.OnAfterRender(firstRender);
}
在服务器上预呈现Blazor时不会调用OnAfterRender和OnAfterRenderAsync
5、禁止UI刷新
重写ShouldRender来取消UI刷新,如果实现则返回true,否则刷新UI
protected override bool ShouldRender()
{
    return true;
}
每次调用ShouldRender。即使ShouldRender被重写,组件也始终是最初呈现的。
6、状态更改
StateHasChanged用来通知组件状态已更改,若调用StateHasChanged方法,则会导致组件重新呈现。
7、JavaScript互操作
需要第三方JavaScript库和访问浏览器API的应用,组件需要与JavaScript进行互操作组件能够使用JavaScript能够使用的任何库或API。c#代码可以调用JavaScript代码,
JavaScript是可以调用c#代码。
8、通过,NET代码调用JavaScript函数
有时需要通过.net代码才能调用JavaScript函数。IJSRuntime抽象。若要发出JS互操作调用,请在组件中注入IJSRuntime。InvokeAsync<T>方法采用JavaScript函数的标志符。


评价
当你知道迷惑时,并不可怜,当你不知道迷惑时,才是最可怜的。
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2022TNBLOG.NET
技术交流:群号677373950
联系我们:contact@tnblog.net
欢迎加群交流技术