Skip to content

Commit 72186d3

Browse files
ArgoZhangOckyd007
andauthored
fix(Tab): should not rerender tabitem after close (#6294)
* refactor: 更改 Key 为 Guid * refactor: 增加 wrap 样式 * refactor: 使用 Find 方法 * fix: 修复关闭标签页导致后续标签页重绘问题 * chore: bump version 9.8.0-beta02 * chore: bump version 9.8.0-beta03 Co-Authored-By: Ockyd007 <[email protected]> * Revert "chore: bump version 9.8.0-beta03" This reverts commit 25b6158. --------- Co-authored-by: Ockyd007 <[email protected]>
1 parent efa9089 commit 72186d3

File tree

4 files changed

+15
-12
lines changed

4 files changed

+15
-12
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.8.0-beta01</Version>
4+
<Version>9.8.0-beta02</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Tab/Tab.razor

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,18 @@ else
2424
var item = TabItems.Find(i => i.IsActive);
2525
if (item != null)
2626
{
27-
@RenderTabItem(item)
27+
<div id="@item.Id" class="@GetTabItemClassString(item)">
28+
@RenderTabItem(item)
29+
</div>
2830
}
2931
}
3032
else
3133
{
3234
foreach (var item in TabItems)
3335
{
34-
@RenderTabItem(item)
36+
<div @key="@item" id="@item.Id" class="@GetTabItemClassString(item)">
37+
@RenderTabItem(item)
38+
</div>
3539
}
3640
}
3741
</CascadingValue>

src/BootstrapBlazor/Components/Tab/Tab.razor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,10 @@ public partial class Tab
486486

487487
private bool IsPreventDefault => _contextMenuZone != null;
488488

489+
private static string? GetTabItemClassString(TabItem item) => CssBuilder.Default("tabs-body-content")
490+
.AddClass("d-none", item is { IsActive: false })
491+
.Build();
492+
489493
/// <summary>
490494
/// <inheritdoc/>
491495
/// </summary>
@@ -1054,7 +1058,7 @@ public async Task DragItemCallback(int originIndex, int currentIndex)
10541058
private async Task OnRefreshAsync()
10551059
{
10561060
// refresh the active tab item
1057-
var item = TabItems.FirstOrDefault(i => i.IsActive);
1061+
var item = TabItems.Find(i => i.IsActive);
10581062

10591063
if (item is not null)
10601064
{

src/BootstrapBlazor/Components/Tab/TabItemContent.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,13 @@ private void RenderContent()
4747
_renderHandle.Render(BuildRenderTree);
4848
}
4949

50-
private object _key = new();
50+
private Guid _key = Guid.NewGuid();
5151

5252
private void BuildRenderTree(RenderTreeBuilder builder)
5353
{
5454
builder.OpenElement(0, "div");
5555
builder.SetKey(_key);
56-
builder.AddAttribute(5, "class", ClassString);
57-
builder.AddAttribute(6, "id", Item.Id);
56+
builder.AddAttribute(5, "class", "tabs-body-content-wrap");
5857
builder.AddContent(10, RenderItemContent(Item.ChildContent));
5958
builder.CloseElement();
6059
}
@@ -79,16 +78,12 @@ private RenderFragment RenderItemContent(RenderFragment? content) => builder =>
7978
builder.CloseComponent();
8079
};
8180

82-
private string? ClassString => CssBuilder.Default("tabs-body-content")
83-
.AddClass("d-none", !Item.IsActive)
84-
.Build();
85-
8681
/// <summary>
8782
/// Render method
8883
/// </summary>
8984
public void Render()
9085
{
91-
_key = new object();
86+
_key = Guid.NewGuid();
9287
RenderContent();
9388
}
9489

0 commit comments

Comments
 (0)