import * as React from 'react'; import { ListRenderItemInfo, View } from 'react-native'; import { FlatListFactory } from '../../ui/FlatList'; import { EmptyPlaceholder } from '../Placeholder'; import { Search } from '../Search'; import { useListSearch } from './ListSearch.hooks'; import { ListSearchItem } from './ListSearch.item'; import type { DefaultComponentModel, ListSearchItemProps, ListSearchProps, } from './types'; export function ListSearch< ComponentModel extends DefaultComponentModel = DefaultComponentModel, >(props: ListSearchProps) { const { onCancel, containerStyle, ItemRender, searchType } = props; const FlatList = React.useMemo( () => FlatListFactory>(), [] ); const ListSearchItemMemo = React.useMemo( () => ItemRender ? React.memo(ItemRender) : React.memo(ListSearchItem), [ItemRender] ); const [value, setValue] = React.useState(''); const { ref, data, deferSearch, onClicked } = useListSearch(props); return ( { setValue(v); deferSearch?.(v); }} value={value} /> > ) => { const { item } = info; return ( ); }} keyExtractor={(item: ListSearchItemProps) => { return item.id; }} ListEmptyComponent={EmptyPlaceholder} keyboardShouldPersistTaps={'handled'} // !!! Resolving a click on a search result requires a two-click operation. ref: https://blog.csdn.net/m0_37192193/article/details/106492095 /> ); }