Skip to content

Commit 775db79

Browse files
committed
refactor: 重构 OnClearValue 方法
1 parent 4334e4d commit 775db79

File tree

4 files changed

+40
-46
lines changed

4 files changed

+40
-46
lines changed

src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ private List<SelectedItem> Rows
208208
}
209209
}
210210

211-
private string? PreviousValue { get; set; }
211+
private string? _lastSelectedValueString;
212212

213213
private string? PlaceholderString => SelectedItems.Count == 0 ? PlaceHolder : null;
214214

@@ -243,9 +243,9 @@ protected override void OnParametersSet()
243243

244244
// 通过 Value 对集合进行赋值
245245
var _currentValue = CurrentValueAsString;
246-
if (PreviousValue != _currentValue)
246+
if (_lastSelectedValueString != _currentValue)
247247
{
248-
PreviousValue = _currentValue;
248+
_lastSelectedValueString = _currentValue;
249249
var list = _currentValue.Split(',', StringSplitOptions.RemoveEmptyEntries);
250250

251251
SelectedItems.Clear();
@@ -322,24 +322,20 @@ private IEnumerable<SelectedItem> FilterBySearchText(IEnumerable<SelectedItem> s
322322
? source
323323
: source.Where(i => i.Text.Contains(SearchText, StringComparison));
324324

325-
private async Task OnClearValue()
325+
/// <summary>
326+
/// <inheritdoc/>
327+
/// </summary>
328+
/// <returns></returns>
329+
protected override async Task OnClearValue()
326330
{
327-
if (ShowSearch)
328-
{
329-
ClearSearchText();
330-
}
331-
if (OnClearAsync != null)
332-
{
333-
await OnClearAsync();
334-
}
331+
await base.OnClearValue();
335332

336333
if (OnQueryAsync != null)
337334
{
338335
await _virtualizeElement.RefreshDataAsync();
339336
}
340337

341-
PreviousValue = string.Empty;
342-
CurrentValue = default;
338+
_lastSelectedValueString = string.Empty;
343339
SelectedItems.Clear();
344340
}
345341

@@ -499,8 +495,7 @@ private async Task SetValue()
499495
await OnSelectedItemsChanged.Invoke(SelectedItems);
500496
}
501497

502-
PreviousValue = CurrentValueAsString;
503-
498+
_lastSelectedValueString = CurrentValueAsString;
504499
if (!ValueChanged.HasDelegate)
505500
{
506501
StateHasChanged();

src/BootstrapBlazor/Components/Select/Select.razor.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -470,24 +470,19 @@ private async Task SelectedItemChanged(SelectedItem item)
470470
/// </summary>
471471
public void Add(SelectedItem item) => _children.Add(item);
472472

473-
private async Task OnClearValue()
473+
/// <summary>
474+
/// <inheritdoc/>
475+
/// </summary>
476+
/// <returns></returns>
477+
protected override async Task OnClearValue()
474478
{
475-
if (ShowSearch)
476-
{
477-
ClearSearchText();
478-
}
479-
if (OnClearAsync != null)
480-
{
481-
await OnClearAsync();
482-
}
479+
await base.OnClearValue();
483480

484481
if (OnQueryAsync != null)
485482
{
486483
await _virtualizeElement.RefreshDataAsync();
487484
}
488-
489485
_lastSelectedValueString = string.Empty;
490-
CurrentValue = default;
491486
SelectedItem = null;
492487
}
493488

src/BootstrapBlazor/Components/Select/SelectBase.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,21 @@ protected override void OnParametersSet()
217217
/// Clears the search text.
218218
/// </summary>
219219
public void ClearSearchText() => SearchText = null;
220+
221+
/// <summary>
222+
/// Clears the selected value.
223+
/// </summary>
224+
/// <returns></returns>
225+
protected virtual async Task OnClearValue()
226+
{
227+
if (ShowSearch)
228+
{
229+
ClearSearchText();
230+
}
231+
if (OnClearAsync != null)
232+
{
233+
await OnClearAsync();
234+
}
235+
CurrentValue = default;
236+
}
220237
}

src/BootstrapBlazor/Components/SelectGeneric/SelectGeneric.razor.cs

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -449,30 +449,17 @@ private async Task ValueTypeChanged(SelectedItem<TValue> item)
449449
/// <param name="item"></param>
450450
public void Add(SelectedItem<TValue> item) => _children.Add(item);
451451

452-
private async Task OnClearValue()
452+
/// <summary>
453+
/// <inheritdoc/>
454+
/// </summary>
455+
/// <returns></returns>
456+
protected override async Task OnClearValue()
453457
{
454-
if (ShowSearch)
455-
{
456-
ClearSearchText();
457-
}
458-
if (OnClearAsync != null)
459-
{
460-
await OnClearAsync();
461-
}
458+
await base.OnClearValue();
462459

463-
SelectedItem<TValue>? item;
464460
if (OnQueryAsync != null)
465461
{
466462
await VirtualizeElement.RefreshDataAsync();
467-
item = _result.Items.FirstOrDefault();
468-
}
469-
else
470-
{
471-
item = Items.FirstOrDefault();
472-
}
473-
if (item != null)
474-
{
475-
await SelectedItemChanged(item);
476463
}
477464
}
478465

0 commit comments

Comments
 (0)