Skip to content

Commit a73868e

Browse files
authored
fix:Improve filter synchronization and data fetching in SearchControls (#398)
fix: improve filter synchronization and data fetching logic in SearchControls and useFetchData
1 parent 8a9a072 commit a73868e

File tree

3 files changed

+306
-269
lines changed

3 files changed

+306
-269
lines changed

frontend/src/components/SearchControls.tsx

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ export function SearchControls({
9696
} else {
9797
// 非受控模式:更新内部状态
9898
setInternalSelectedFilters(newFilters);
99+
// 同时通知父组件当前的筛选值,避免依赖 useEffect 造成死循环
100+
onFiltersChange?.(newFilters);
99101
}
100102
};
101103

@@ -140,20 +142,6 @@ export function SearchControls({
140142
(values) => Array.isArray(values) && values.length > 0 && values[0] !== undefined
141143
);
142144

143-
// 同步外部 selectedFilters 到内部状态
144-
useEffect(() => {
145-
if (externalSelectedFilters !== undefined) {
146-
setInternalSelectedFilters(externalSelectedFilters);
147-
}
148-
}, [externalSelectedFilters]);
149-
150-
// 非受控模式下,当内部状态变化时通知父组件
151-
useEffect(() => {
152-
if (externalSelectedFilters !== undefined) return; // 受控模式不需要这个 effect
153-
if (Object.keys(selectedFilters).length === 0) return;
154-
onFiltersChange?.(selectedFilters);
155-
}, [selectedFilters, onFiltersChange, externalSelectedFilters]);
156-
157145
return (
158146
<div className={className}>
159147
<div className="flex items-center justify-between gap-8">

0 commit comments

Comments
 (0)