您现在的位置是:网站首页> 编程资料编程资料
Blazor组件的生命周期解析_实用技巧_
2023-05-24
419人已围观
简介 Blazor组件的生命周期解析_实用技巧_
执行周期
- 1. SetParametersAsync
- 2. OnInitializedAsync(调用两次) 和 OnInitialized;
- 3. OnParametersSetAsync 或 OnParametersSet;
- 4. OnAfterRenderAsync 和 OnAfterRender;
- 5. 每次组件呈现都会调用ShouldRender;

各周期解析
SetParametersAsync
每次调用 SetParametersAsync 时,ParameterView 都包含整个参数值集。
SetParametersAsync 的默认实现使用 [Parameter] 或 [CascadingParameter] 特性(在 ParameterView 中具有对应的值)设置每个属性的值。 在 ParameterView 中没有对应值的参数保持不变。
如果未调用 base.SetParametersAync,则自定义代码可使用任何需要的方式解释传入的参数值。 例如,不要求将传入参数分配给类的属性。
如果设置有事件处理程序,处置时会将其解除挂接。 有关详细信息,请参阅使用 IDisposable 处置组件部分。
public override async Task SetParametersAsync(ParameterView parameters) { await ... await base.SetParametersAsync(parameters); }OnInitializedAsync 和 OnInitialized
SetParametersAsync 中的组件在从其父组件接收初始参数后初始化,此时,将调用 OnInitializedAsync 和 OnInitialized。
在组件执行异步操作时使用 OnInitializedAsync,并应在操作完成后刷新。
对于同步操作,替代 OnInitialized:
预呈现其内容的 Blazor Server 应用调用 OnInitializedAsync 两次:
在组件最初作为页面的一部分静态呈现时调用一次。
在浏览器重新建立与服务器的连接时调用第二次。
为了防止 OnInitializedAsync 中的开发人员代码运行两次,请参阅预呈现后的有状态重新连接部分。
在 Blazor Server 应用进行预呈现时,由于尚未建立与浏览器的连接,无法执行调用 JavaScript 等特定操作。 预呈现时,组件可能需要进行不同的呈现。 有关详细信息,请参阅检测应用何时预呈现部分。
如果设置有事件处理程序,处置时会将其解除挂接。
备注
应用参数和属性值时,异步操作必须在 OnParametersSetAsync 生命周期事件期间发生。
protected override void OnInitialized() { ... } protected override async Task OnInitializedAsync() { await ... }OnParametersSetAsync 或 OnParametersSet
在以下情况下调用:
在 OnInitializedAsync 或 OnInitialized 中初始化组件后。
当父组件重新呈现并提供以下内容时:
至少一个参数已更改的唯一已知基元不可变类型。
任何复杂类型的参数。 框架无法知道复杂类型参数的值是否在内部发生了改变,因此,它将参数集视为已更改。
备注
应用参数和属性值时,异步操作必须在 OnParametersSetAsync 生命周期事件期间发生。
protected override async Task OnParametersSetAsync() { await ... } protected override void OnParametersSet() { ... }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- .Net项目在Docker容器中开发部署_实用技巧_
- 使用.NET升级助手将.NET Framework项目升级为.NET 6_实用技巧_
- ASP.NET登出系统并清除Cookie_实用技巧_
- ASP.NET Core集成Apollo(阿波罗)_实用技巧_
- Asp.Net Core使用Ocelot结合Consul实现服务注册和发现_实用技巧_
- ASP.NET Core为Ocelot网关配置Swagger_实用技巧_
- ASP.NET Core设置Ocelot网关限流_实用技巧_
- ASP.NET Core中的Ocelot网关介绍_实用技巧_
- ASP.NET Core使用Swagger/OpenAPI规范_实用技巧_
- ASP.NET Core使用AutoMapper组件_实用技巧_
