From 01c4384a823195d22d0481db91397fb4882a5d6e Mon Sep 17 00:00:00 2001 From: Argo-AsicoTech Date: Fri, 15 Nov 2024 19:14:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E4=BF=AE=E5=A4=8D=E5=B8=83?= =?UTF-8?q?=E5=B0=94=E5=80=BC=E6=97=B6=E4=B8=8D=E8=A7=A6=E5=8F=91=20OnStat?= =?UTF-8?q?eChanged=20=E5=9B=9E=E8=B0=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Checkbox/Checkbox.razor.cs | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.cs b/src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.cs index 528c7c7857c..548e5f96740 100644 --- a/src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.cs +++ b/src/BootstrapBlazor/Components/Checkbox/Checkbox.razor.cs @@ -215,21 +215,23 @@ private async Task InternalStateChanged(CheckboxState state) if (IsBoolean) { CurrentValue = (TValue)(object)(state == CheckboxState.Checked); - } - if (State != state) - { - State = state; - if (StateChanged.HasDelegate) + if (ValueChanged.HasDelegate) { - await StateChanged.InvokeAsync(State); ret = false; } + } - if (OnStateChanged != null) - { - await OnStateChanged(State, Value); - } + State = state; + if (StateChanged.HasDelegate) + { + await StateChanged.InvokeAsync(State); + ret = false; + } + + if (OnStateChanged != null) + { + await OnStateChanged(State, Value); } return ret; } From 05dc08a6d29c1d227984233f7bcdf5be9c6f6bd1 Mon Sep 17 00:00:00 2001 From: Argo-AsicoTech Date: Fri, 15 Nov 2024 19:38:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/CheckboxListTest.cs | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/UnitTest/Components/CheckboxListTest.cs b/test/UnitTest/Components/CheckboxListTest.cs index 278ab948553..60f582fa2a5 100644 --- a/test/UnitTest/Components/CheckboxListTest.cs +++ b/test/UnitTest/Components/CheckboxListTest.cs @@ -94,6 +94,27 @@ public async Task Checkbox_OnTriggerClickAsync() Assert.Equal(CheckboxState.Checked, cut.Instance.State); } + [Fact] + public async Task Bool_TriggerStateChanged_Ok() + { + bool value = false; + // 测试 bool 值改变值时触发 StateChanged 回调方法 + var cut = Context.RenderComponent>(pb => + { + pb.Add(a => a.Value, false); + pb.Add(a => a.OnStateChanged, (state, v) => + { + value = v; + return Task.CompletedTask; + }); + }); + + // JavaScript 调用 OnTriggerClickAsync 方法 + await cut.InvokeAsync(() => cut.Instance.OnTriggerClickAsync()); + Assert.Equal(CheckboxState.Checked, cut.Instance.State); + Assert.True(value); + } + [Fact] public void Checkbox_Dispose() {