数据库教程:Blazor组件的生命周期解析

执行周期1. setparametersasync2. oninitializedasync(调用两次) 和 oninitialized;3. onparameterssetasync 或 onpar


执行周期

  • 1. setparametersasync
  • 2. oninitializedasync(调用两次) 和 oninitialized;
  • 3. onparameterssetasync 或 onparametersset;
  • 4. onafterrenderasync 和 onafterrender;
  • 5. 每次组件呈现都会调用shouldrender;

Blazor组件的生命周期解析

各周期解析

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组件的生命周期解析的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多数据库技术:Blazor组件的生命周期解析,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/1086909.html

(0)
上一篇 2022年4月30日
下一篇 2022年4月30日

精彩推荐