Skip to content

Commit 6c8f7c3

Browse files
committed
refactor: 提炼 BootstrapBlazorRender 组件
1 parent def8f94 commit 6c8f7c3

File tree

3 files changed

+12
-20
lines changed

3 files changed

+12
-20
lines changed

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/>
1717
<span class="form-select-append"><i class="@Icon"></i></span>
1818
<span class="form-select-append ac-loading"><i class="@LoadingIcon"></i></span>
19-
<RenderTemplate ChildContent="RenderItems"></RenderTemplate>
19+
<BootstrapBlazorRender @ref="_dropdown">
20+
@RenderDropdown
21+
</BootstrapBlazorRender>
2022
</div>
2123

2224
@code {

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public partial class AutoComplete
9090
private List<string>? _filterItems;
9191

9292
[NotNull]
93-
private AutoCompleteItems? _dropdown = default;
93+
private BootstrapBlazorRender? _dropdown = default;
9494

9595
/// <summary>
9696
/// <inheritdoc/>
@@ -187,15 +187,7 @@ public override Task TriggerChange(string val)
187187
StateHasChanged();
188188
}
189189
_render = true;
190-
_dropdown.RenderContent();
190+
_dropdown.Render();
191191
return Task.CompletedTask;
192192
}
193-
194-
private RenderFragment RenderItems => builder =>
195-
{
196-
builder.OpenComponent<AutoCompleteItems>(0);
197-
builder.AddAttribute(10, "ChildContent", RenderDropdown);
198-
builder.AddComponentReferenceCapture(20, dropdown => _dropdown = (AutoCompleteItems)dropdown);
199-
builder.CloseComponent();
200-
};
201193
}

src/BootstrapBlazor/Components/AutoComplete/AutoCompleteItems.cs renamed to src/BootstrapBlazor/Components/BaseComponents/BootstrapBlazorRender.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@
88
namespace BootstrapBlazor.Components;
99

1010
/// <summary>
11-
/// AutoCompleteItems component
11+
/// BootstrapBlazorRender component
1212
/// </summary>
13-
class AutoCompleteItems : IComponent
13+
public class BootstrapBlazorRender : IComponent
1414
{
1515
/// <summary>
1616
/// Gets or sets the child content
1717
/// </summary>
1818
[Parameter, NotNull]
1919
public RenderFragment? ChildContent { get; set; }
2020

21+
private static readonly RenderFragment _emptyRenderFragment = _ => { };
22+
2123
private RenderHandle _renderHandle;
2224

2325
/// <summary>
@@ -38,23 +40,19 @@ public Task SetParametersAsync(ParameterView parameters)
3840
{
3941
parameters.SetParameterProperties(this);
4042

41-
RenderContent();
43+
Render();
4244
return Task.CompletedTask;
4345
}
4446
/// <summary>
4547
/// Render method
4648
/// </summary>
47-
public void RenderContent()
49+
public void Render()
4850
{
4951
_renderHandle.Render(BuildRenderTree);
5052
}
5153

52-
/// <summary>
53-
/// <inheritdoc/>
54-
/// </summary>
55-
/// <param name="builder"></param>
5654
private void BuildRenderTree(RenderTreeBuilder builder)
5755
{
58-
builder.AddContent(0, ChildContent);
56+
builder.AddContent(0, ChildContent ?? _emptyRenderFragment);
5957
}
6058
}

0 commit comments

Comments
 (0)