Skip to content

Commit e8d9bf1

Browse files
authored
feat(Dialog): support call show OnAfterRender lifecycle (#4343)
* refactor: 增加脚本加载阻塞逻辑 * refactor: 代码重构 * chore: bump version 8.9.4-beta01 * refactor: 移除基类脚本调用 * Revert "refactor: 代码重构" This reverts commit 789d4b4. * Revert "refactor: 增加脚本加载阻塞逻辑" This reverts commit e9baf2f. * feat: 增加加载与初始化阻塞类 * feat: 支持 OnAfterRender 中弹窗
1 parent 4d5801b commit e8d9bf1

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>8.9.3</Version>
4+
<Version>8.9.4-beta01</Version>
55
</PropertyGroup>
66

77
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">

src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs

+12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ public abstract class BootstrapModuleComponentBase : IdComponentBase, IAsyncDisp
3636
/// </summary>
3737
protected DotNetObjectReference<BootstrapModuleComponentBase>? Interop { get; set; }
3838

39+
/// <summary>
40+
/// 获得/设置 Module 是否加载完成
41+
/// </summary>
42+
protected TaskCompletionSource ModuleLoadTask { get; } = new();
43+
44+
/// <summary>
45+
/// 获得/设置 Module 是否初始化完成
46+
/// </summary>
47+
protected TaskCompletionSource ModuleInitTask { get; } = new();
48+
3949
/// <summary>
4050
/// <inheritdoc/>
4151
/// </summary>
@@ -55,11 +65,13 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
5565
if (firstRender && !string.IsNullOrEmpty(ModulePath))
5666
{
5767
Module ??= await JSRuntime.LoadModule(ModulePath);
68+
ModuleLoadTask.SetResult();
5869

5970
if (AutoInvokeInit)
6071
{
6172
await InvokeInitAsync();
6273
}
74+
ModuleInitTask.SetResult();
6375
}
6476
}
6577

src/BootstrapBlazor/Components/Modal/Modal.razor.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,21 @@ public async Task CloseCallback()
176176
/// <summary>
177177
/// 弹窗状态切换方法
178178
/// </summary>
179-
public Task Toggle() => InvokeVoidAsync("execute", Id, "toggle");
179+
public async Task Toggle()
180+
{
181+
await ModuleInitTask.Task;
182+
await InvokeVoidAsync("execute", Id, "toggle");
183+
}
180184

181185
/// <summary>
182186
/// 显示弹窗方法
183187
/// </summary>
184188
/// <returns></returns>
185-
public Task Show() => InvokeVoidAsync("execute", Id, "show");
189+
public async Task Show()
190+
{
191+
await ModuleInitTask.Task;
192+
await InvokeVoidAsync("execute", Id, "show");
193+
}
186194

187195
/// <summary>
188196
/// 关闭当前弹窗方法

src/BootstrapBlazor/Components/Table/TableToolbarButton.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ protected override void OnInitialized()
5555
/// </summary>
5656
/// <param name="disposing"></param>
5757
/// <returns></returns>
58-
protected override async ValueTask DisposeAsync(bool disposing)
58+
protected override ValueTask DisposeAsync(bool disposing)
5959
{
6060
Toolbar?.RemoveButton(this);
61-
await base.DisposeAsync(disposing);
61+
return ValueTask.CompletedTask;
6262
}
6363
}

src/BootstrapBlazor/Components/Table/TableToolbarPopConfirmButton.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ protected override void OnParametersSet()
7373
/// </summary>
7474
/// <param name="disposing"></param>
7575
/// <returns></returns>
76-
protected override async ValueTask DisposeAsync(bool disposing)
76+
protected override ValueTask DisposeAsync(bool disposing)
7777
{
7878
Toolbar?.RemoveButton(this);
79-
await base.DisposeAsync(disposing);
79+
return ValueTask.CompletedTask;
8080
}
8181
}

0 commit comments

Comments
 (0)