Skip to content

Commit dcc1384

Browse files
committed
refactor: 通过 GetChangedEventCallbackName 提高性能
1 parent 895a16c commit dcc1384

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
159159
/// <inheritdoc/>
160160
/// </summary>
161161
/// <returns></returns>
162-
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, Value);
162+
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, new { Value, ChangedEventCallback = GetChangedEventCallbackName() });
163+
164+
private string? GetChangedEventCallbackName() => (OnValueChanged != null || ValueChanged.HasDelegate) ? nameof(TriggerChange) : null;
163165

164166
/// <summary>
165167
/// Gets whether show the clear button.

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import EventHandler from "../../modules/event-handler.js"
55
import Input from "../../modules/input.js"
66
import Popover from "../../modules/base-popover.js"
77

8-
export function init(id, invoke, value) {
8+
export function init(id, invoke, options) {
99
const el = document.getElementById(id)
1010
const menu = el.querySelector('.dropdown-menu')
1111
const input = document.getElementById(`${id}_input`)
1212
const ac = { el, invoke, menu, input }
1313
Data.set(id, ac)
1414

15+
const { value, changedEventCallback } = options;
1516
input.value = value;
1617

1718
const isPopover = input.getAttribute('data-bs-toggle') === 'bb.dropdown';
@@ -64,9 +65,11 @@ export function init(id, invoke, value) {
6465
}
6566
});
6667

67-
EventHandler.on(input, 'change', e => {
68-
invoke.invokeMethodAsync('TriggerChange', e.target.value);
69-
});
68+
if (changedEventCallback) {
69+
EventHandler.on(input, 'change', e => {
70+
invoke.invokeMethodAsync('TriggerChange', e.target.value);
71+
});
72+
}
7073

7174
let filterDuration = duration;
7275
if (filterDuration === 0) {

0 commit comments

Comments
 (0)