diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 2d100b888dd..12f00e1294c 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.9.3-beta01 + 9.9.3-beta02 diff --git a/src/BootstrapBlazor/Components/Select/SelectTree.razor b/src/BootstrapBlazor/Components/Select/SelectTree.razor index b5582d0aab4..84678968bb0 100644 --- a/src/BootstrapBlazor/Components/Select/SelectTree.razor +++ b/src/BootstrapBlazor/Components/Select/SelectTree.razor @@ -15,7 +15,7 @@ } else { - + } diff --git a/src/BootstrapBlazor/Components/Select/SelectTree.razor.cs b/src/BootstrapBlazor/Components/Select/SelectTree.razor.cs index 014544f6ae6..d31a1833252 100644 --- a/src/BootstrapBlazor/Components/Select/SelectTree.razor.cs +++ b/src/BootstrapBlazor/Components/Select/SelectTree.razor.cs @@ -150,6 +150,10 @@ public partial class SelectTree : IModelEqualityComparer [NotNull] private IStringLocalizer>? Localizer { get; set; } + [Inject] + [NotNull] + private IIconTheme? IconTheme { get; set; } + /// /// 获得 input 组件 Id 方法 /// @@ -161,19 +165,9 @@ public partial class SelectTree : IModelEqualityComparer /// private string? InputId => $"{Id}_input"; - /// - /// 获得/设置 上次选项 - /// - private TreeViewItem? SelectedItem { get; set; } - - private List>? ItemCache { get; set; } - - [NotNull] - private List>? ExpandedItemsCache { get; set; } - - [Inject] - [NotNull] - private IIconTheme? IconTheme { get; set; } + private TreeViewItem? _selectedItem; + private List>? _itemCache; + private List>? _expandedItemsCache; private string? SelectTreeCustomClassString => CssBuilder.Default(CustomClassString) .AddClass("select-tree", IsPopover) @@ -190,19 +184,6 @@ protected override void OnInitialized() AddRequiredValidator(); } - /// - /// - /// - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - if (Value != null) - { - await TriggerItemChanged(s => Equals(s.Value, Value)); - } - } - /// /// /// @@ -263,18 +244,22 @@ private async Task TriggerItemChanged(Func, bool> predicate if (currentItem != null) { currentItem.IsActive = true; - await ItemChanged(currentItem); + + if (_selectedItem == null || !Equals(_selectedItem.Value, Value)) + { + await ItemChanged(currentItem); + } } } private List> GetExpandedItems() { - if (ItemCache != Items) + if (_itemCache != Items) { - ItemCache = Items; - ExpandedItemsCache = TreeViewExtensions.GetAllItems(ItemCache).ToList(); + _itemCache = Items; + _expandedItemsCache = [.. TreeViewExtensions.GetAllItems(_itemCache)]; } - return ExpandedItemsCache; + return _expandedItemsCache!; } /// @@ -295,7 +280,7 @@ private async Task OnItemClick(TreeViewItem item) /// private async Task ItemChanged(TreeViewItem item) { - SelectedItem = item; + _selectedItem = item; CurrentValue = item.Value; // 触发 SelectedItemChanged 事件