如何使用同一 Blazor 组件的多个实例

问题描述

我有一个选项卡控件,并在每个选项卡上动态创建具有相同组件(例如员工)的选项卡。创建第一个时,构造函数和 OnInitialized 执行。但是当我创建另一个(比如另一个员工)时,构造函数和 OnInitialized 不会执行。 (OnParameteRSSetAsync 为每个运行多次)。

最初我在 OnInitialized 中检索员工信息。我明白这是首选的做法。但由于它不为第二个员工运行,我不知道在哪里检索第二个员工信息。我没有看到 OnParameteRSSetAsync 的可预测行为。

如果有一个事件在这种情况下总是运行一次,那么这可能会奏效。有什么想法吗?

解决方法

我认为您正试图强制 blazor 重新初始化组件。

实现这一点的一种方法是使用@key 属性。

如果您将组件设置为 <EmployeeComponent @key=”@Employee.Id”,则每次更改员工并且父组件重新渲染时,blazor diff 算法将被诱使创建新的 EmployeeComponent,而不是重新渲染旧组件。

如果没有您的代码示例,很难说它是否是该技术的正确用例。您的问题可能会有更优雅的解决方案。