Skip to content

Commit 99090e3

Browse files
authored
feat(Checkbox): optimize OnBeforeStateChanged callback method (#4566)
* refactor: 增加 data-bb-trigger-before 标签支持参数动态赋值 * refactor: 判断标签值进行 invoke 提高效率 * chore: bump version 8.11.1-beta02 * refactor: 更新关键字
1 parent 18c485d commit 99090e3

File tree

4 files changed

+11
-11
lines changed

4 files changed

+11
-11
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>8.11.1-beta01</Version>
4+
<Version>8.11.1-beta02</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Checkbox/Checkbox.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ else
2020
@code {
2121
RenderFragment RenderCheckbox =>
2222
@<div @attributes="AdditionalAttributes" class="@ClassString">
23-
<DynamicElement TagName="input" class="@InputClassString" type="checkbox" id="@Id" disabled="@Disabled" checked="@CheckedString" TriggerClick="TriggerClick" OnClick="OnToggleClick" StopPropagation="StopPropagation" />
23+
<DynamicElement TagName="input" class="@InputClassString" type="checkbox" id="@Id" disabled="@Disabled" checked="@CheckedString" data-bb-trigger-before="@TriggerBeforeValueString" TriggerClick="TriggerClick" OnClick="OnToggleClick" StopPropagation="StopPropagation" />
2424
@if (IsShowAfterLabel)
2525
{
2626
@RenderLabel

src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ public partial class Checkbox<TValue> : ValidateBase<TValue>
100100
[Parameter]
101101
public bool StopPropagation { get; set; }
102102

103+
private string? TriggerBeforeValueString => OnBeforeStateChanged == null ? null : "true";
104+
103105
/// <summary>
104106
/// <inheritdoc/>
105107
/// </summary>
@@ -155,13 +157,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
155157
/// <inheritdoc/>
156158
/// </summary>
157159
/// <returns></returns>
158-
protected override async Task InvokeInitAsync()
159-
{
160-
if (OnBeforeStateChanged != null)
161-
{
162-
await InvokeVoidAsync("init", Id, Interop, new { Callback = nameof(TriggerOnBeforeStateChanged) });
163-
}
164-
}
160+
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, new { Callback = nameof(TriggerOnBeforeStateChanged) });
165161

166162
/// <summary>
167163
/// 触发 OnBeforeStateChanged 回调方法 由 JavaScript 调用

src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ export function init(id, invoke, options) {
99

1010
EventHandler.on(el, 'click', async e => {
1111
e.preventDefault();
12-
await invoke.invokeMethodAsync(options.callback);
13-
})
12+
13+
const trigger = el.getAttribute("data-bb-trigger-before");
14+
if (trigger === 'true') {
15+
await invoke.invokeMethodAsync(options.callback);
16+
}
17+
});
1418
}
1519

1620
export function dispose(id) {

0 commit comments

Comments
 (0)