执行周期

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()
{
...
}

Blazor 生命周期的更多相关文章

  1. Blazor入门笔记(4)-组件的生命周期

    1.环境 VS2019 16.5.1.NET Core SDK 3.1.200Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.简介 Blaz ...

  2. Blazor和Vue对比学习(进阶2.1.1):生命周期,基本理解和使用

    一.基本理解 首次接触"生命周期"这个名词,是比较晦涩的,Vue中又有生命周期钩子,而Blazor则是虚方法重写,容易蒙.所以,我尝试从初学者的角度来阐述一下. 1.我们在基础部分 ...

  3. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  4. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  5. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

  6. UIViewController生命周期-完整版

    一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObje ...

  7. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

  8. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  9. Autofac - 生命周期

    实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...

随机推荐

  1. 机器学习实战 | SKLearn最全应用指南

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/41 本文地址:http://www.showmeai.tech/article-det ...

  2. zabbix图形中文乱码

    别的贴子都是说到修改/usr/share/zabbix/include/defines.inc.php中的 define('ZBX_FONT_NAME', 'msyh'); define('ZBX_G ...

  3. 如何drop caches

    http://www.linuxfly.org/post/320/ syncecho 3 > /proc/sys/vm/drop_caches

  4. Spring Cloud Alibaba分布式事务组件 seata 详解(小白都能看懂)

    一,什么是事务(本地事务)? 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 简单的说,事务就是并发控制的单位,是用户定义的一个操作序列.      而一个逻辑工作单元要成 ...

  5. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  6. java 基础知识(三)

    Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...

  7. 说说has a与is a的区别?

    is a是典型的"一般到特殊"的关系,也就是典型的继承关系.例如Apple is a Fruit.那么Apple是一种特殊的Fruit,也就是说Apple继承了Fruit. has ...

  8. phptorm 集成git和gitlab和一些命令

    mac: 2.phpstorm->csv->create git... 3.命令:ssh-keygen -t rsa -C"your_email@youremail.com&qu ...

  9. Spring-boot-菜鸟-快速创建应用

    file-new-project 选择Spring boot ,然后选择自己的配置类型,maven  jdk版本等 结果: 目录解析: resources文件夹中目录结构 static:保存所有的静态 ...

  10. 为什么使用 Executor 框架?

    每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时. 耗资源的. 调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建, 线程之间的相互 ...