如何使用同一 Blazor 组件的多个实例
How to use multiple instances of the same Blazor component
我有一个选项卡控件,并在每个选项卡上动态创建具有相同组件(例如,Employee)的选项卡。创建第一个时,将执行构造函数和 OnInitialized。但是当我创建另一个(比如另一个员工)时,构造函数和 OnInitialized 不执行。 (每次 OnParametersSetAsync 运行s 多次)。
最初我在OnInitialized 中检索了Employee 信息。我知道这是首选做法。但是由于第二个员工没有运行,我不知道从哪里检索第二个员工信息。我没有看到 OnParametersSetAsync 的可预测行为。
如果在这种情况下某个事件总是 运行 一次,那么它可能会奏效。有什么想法吗?
我认为您正试图强制 blazor 重新初始化一个组件。
实现这一点的一种方法是使用@key 属性。
如果你像 <EmployeeComponent @key=”@Employee.Id”
那样设置你的组件,每次你更改 employee 并且父组件重新渲染时,blazor diff 算法将被欺骗创建新的 EmployeeComponent,而不是重新渲染旧的。
没有您的代码示例,很难说它是否是该技术的正确用例。您的问题可能会有更优雅的解决方案。
我有一个选项卡控件,并在每个选项卡上动态创建具有相同组件(例如,Employee)的选项卡。创建第一个时,将执行构造函数和 OnInitialized。但是当我创建另一个(比如另一个员工)时,构造函数和 OnInitialized 不执行。 (每次 OnParametersSetAsync 运行s 多次)。
最初我在OnInitialized 中检索了Employee 信息。我知道这是首选做法。但是由于第二个员工没有运行,我不知道从哪里检索第二个员工信息。我没有看到 OnParametersSetAsync 的可预测行为。
如果在这种情况下某个事件总是 运行 一次,那么它可能会奏效。有什么想法吗?
我认为您正试图强制 blazor 重新初始化一个组件。
实现这一点的一种方法是使用@key 属性。
如果你像 <EmployeeComponent @key=”@Employee.Id”
那样设置你的组件,每次你更改 employee 并且父组件重新渲染时,blazor diff 算法将被欺骗创建新的 EmployeeComponent,而不是重新渲染旧的。
没有您的代码示例,很难说它是否是该技术的正确用例。您的问题可能会有更优雅的解决方案。