执行周期

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. 使用SymPy

    最近工作的原因,需要进行一些积分运算,通过一些搜索得知了SymPy,记录一下使用历程. 1. SymPy介绍 SymPy是关于Symbolic Mathematics的Python库,它旨在成为一个功 ...

  2. 开源版-阿里云人脸搜索M:N,人脸比对1:1

    一.人脸搜索概要 本项目是阿里云视觉智能开放平台的人脸1:N的开源替代,项目中使用的模型均为开源模型,项目支持milvus和proxima向量存储库,并具有较高的自定义能力. 项目使用纯Java开发, ...

  3. centos 在线安装 docker

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 在新主机上首次安装Docker Engine之前,需要设置Docker存储库.之后,您可以从存储库安装和更新Docker. 设置存储库 安装yu ...

  4. ORM,Django对数据库的连接和使用

    ORM,Django对数据库连接和使用数据 ORM(对象关系映射) 很多语言中的web框架都有这个概念 为什么要有ORM? 写程序离不开数据 新的语法,不需要我们自己写SQL语句 我们按照新的语法写代 ...

  5. 22.1.23Manacher算法、双端队列、单调栈

    22.1.23Manacher算法.双端队列.单调栈 1.Manacher算法 1)用途: Manacher算法用于解决类似求某个字符串中最长的回文子串.(回文就是正着读和倒着读一样的结构). 2)算 ...

  6. 你如何在 Java 中获取线程堆栈?

    kill -3 [java pid] 不会在当前终端输出,它会输出到代码执行的或指定的地方去.比如,kill -3 tomcat pid, 输出堆栈到 log 目录下. Jstack [java pi ...

  7. FiddlerEverywhere注册账号进行激活失效问题

    有关FiddlerEverywhere通过邮件激活账号时,激活链接提示已失效问题:这个链接有进行一个讨论(https://www.telerik.com/forums/unable-to-activa ...

  8. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面) ?

    索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的 ...

  9. 如何在网上找java包

    如图所示 在java api后面输入你要找包的名称就可以了

  10. volatile 类型变量提供什么保证?

    volatile 变量提供顺序和可见性保证,例如,JVM 或者 JIT 为了获得更好的性能 会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会 与其他语句重排序. vo ...