如何告诉 Blazor 不要重新渲染 childComponent

How to tell Blazor to not Rerender childComponent

我在 c#、Html、css 和一些 Js 上有一个动态自己的选项卡。 Js 只是将样式“显示”切换为阻止或 none。 使用 foreach 生成标签。

示例:

foreach (item in TabsList){<div@RenderFragment/<div}

主要问题:在我的选项卡中有一些操作和数据,我不想在添加或删除其他选项卡时丢失它们。如果我添加新选项卡,那么它将正常呈现而不重新渲染旧选项卡并丢失数据,但如果我从位于当前所选选项卡左侧的列表选项卡中删除,则 Blazor 将重新渲染我的所有选项卡,我将丢失我的数据。但是,如果我删除当前所选选项卡右侧的选项卡,Blazor 将不会重新呈现我的所有选项卡。 是否可以告诉 Blazor 只从 TabsList 中删除项目而不是重新渲染我的组件?

您应该在组件内部将 shouldRender() 方法设置为 false(这将防止 re-render 每次调用组件时,只在第一次渲染时出现) ,无论如何,就像一年前一样,他们试图在 git 上的这个线程中解决这个问题,其中有很多关于该主题的信息!

这可能可以通过@key 属性解决。
没有[mre]是无法确定的,你可以测试一下:

 foreach (item in TabsList){ <div @key="item">@RenderFragment</div> }