mirror of https://github.com/msgbyte/tailchat
				
				
				
			feat: 抽象搜索逻辑与增加身份组搜索
							parent
							
								
									5996a7024a
								
							
						
					
					
						commit
						8e594008be
					
				@ -0,0 +1,23 @@
 | 
			
		||||
import { useMemo, useState } from 'react';
 | 
			
		||||
 | 
			
		||||
export interface UseSearchOptions<T> {
 | 
			
		||||
  dataSource: T[];
 | 
			
		||||
  filterFn: (item: T, searchText: string) => boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function useSearch<T>(options: UseSearchOptions<T>) {
 | 
			
		||||
  const { dataSource, filterFn } = options;
 | 
			
		||||
  const [searchText, setSearchText] = useState('');
 | 
			
		||||
  const isSearching = searchText !== '';
 | 
			
		||||
 | 
			
		||||
  const searchResult = useMemo(() => {
 | 
			
		||||
    return dataSource.filter((item) => filterFn(item, searchText));
 | 
			
		||||
  }, [dataSource, searchText]);
 | 
			
		||||
 | 
			
		||||
  return {
 | 
			
		||||
    searchText,
 | 
			
		||||
    setSearchText,
 | 
			
		||||
    isSearching,
 | 
			
		||||
    searchResult,
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue