103f1f70cS猫头猫import React, {useState} from 'react'; 24060c00aS猫头猫import {StyleSheet} from 'react-native'; 303f1f70cS猫头猫import rpx from '@/utils/rpx'; 403f1f70cS猫头猫import MusicBar from '@/components/musicBar'; 503f1f70cS猫头猫import SearchResult from './searchResult'; 603f1f70cS猫头猫import StatusBar from '@/components/base/statusBar'; 703f1f70cS猫头猫import useColors from '@/hooks/useColors'; 803f1f70cS猫头猫import {fontSizeConst} from '@/constants/uiConst'; 9*b4c389f4Smaotoumaoimport {useParams} from '@/core/router'; 103b155a65S猫头猫import globalStyle from '@/constants/globalStyle'; 113b155a65S猫头猫import VerticalSafeAreaView from '@/components/base/verticalSafeAreaView'; 12e650bfb3S猫头猫import Input from '@/components/base/input'; 13e650bfb3S猫头猫import AppBar from '@/components/base/appBar'; 1403f1f70cS猫头猫 1503f1f70cS猫头猫function filterMusic(query: string, musicList: IMusic.IMusicItem[]) { 1603f1f70cS猫头猫 if (query?.length === 0) { 170224b881S猫头猫 return musicList; 1803f1f70cS猫头猫 } 1903f1f70cS猫头猫 return musicList.filter(_ => 207cf7a728S猫头猫 `${_.title} ${_.artist} ${_.album} ${_.platform}` 217cf7a728S猫头猫 .toLowerCase() 227cf7a728S猫头猫 .includes(query.toLowerCase()), 2303f1f70cS猫头猫 ); 2403f1f70cS猫头猫} 2503f1f70cS猫头猫 264060c00aS猫头猫export default function SearchMusicList() { 277ce5c26cS猫头猫 const {musicList, musicSheet} = useParams<'search-music-list'>(); 28e7fa3837S猫头猫 const [result, setResult] = useState<IMusic.IMusicItem[]>(musicList ?? []); 2903f1f70cS猫头猫 const [query, setQuery] = useState(''); 3003f1f70cS猫头猫 3103f1f70cS猫头猫 const colors = useColors(); 3203f1f70cS猫头猫 3303f1f70cS猫头猫 const onChangeSearch = (_: string) => { 3403f1f70cS猫头猫 setQuery(_); 357cf7a728S猫头猫 // useTransition做优化 368f77047eS猫头猫 setResult(filterMusic(_.trim(), musicList ?? [])); 3703f1f70cS猫头猫 }; 3803f1f70cS猫头猫 3903f1f70cS猫头猫 return ( 403b155a65S猫头猫 <VerticalSafeAreaView style={globalStyle.fwflex1}> 414060c00aS猫头猫 <StatusBar /> 42e650bfb3S猫头猫 <AppBar> 43e650bfb3S猫头猫 <Input 4403f1f70cS猫头猫 style={style.searchBar} 45277c5280S猫头猫 fontColor={colors.appBarText} 4603f1f70cS猫头猫 placeholder="在列表中搜索歌曲" 473b870a26S猫头猫 accessible 487fb90110S猫头猫 autoFocus 493b870a26S猫头猫 accessibilityLabel="搜索框" 503b870a26S猫头猫 accessibilityHint={'在列表中搜索歌曲'} 5103f1f70cS猫头猫 value={query} 524060c00aS猫头猫 onChangeText={onChangeSearch} 534060c00aS猫头猫 /> 54e650bfb3S猫头猫 </AppBar> 557ce5c26cS猫头猫 <SearchResult result={result} musicSheet={musicSheet} /> 564060c00aS猫头猫 <MusicBar /> 573b155a65S猫头猫 </VerticalSafeAreaView> 5803f1f70cS猫头猫 ); 5903f1f70cS猫头猫} 6003f1f70cS猫头猫 6103f1f70cS猫头猫const style = StyleSheet.create({ 6203f1f70cS猫头猫 appbar: { 6303f1f70cS猫头猫 shadowColor: 'transparent', 6403f1f70cS猫头猫 backgroundColor: '#2b333eaa', 6503f1f70cS猫头猫 }, 6603f1f70cS猫头猫 searchBar: { 6703f1f70cS猫头猫 minWidth: rpx(375), 6803f1f70cS猫头猫 flex: 1, 6903f1f70cS猫头猫 borderRadius: rpx(64), 7003f1f70cS猫头猫 height: rpx(64), 71e650bfb3S猫头猫 fontSize: rpx(32), 7203f1f70cS猫头猫 }, 7303f1f70cS猫头猫 input: { 7403f1f70cS猫头猫 padding: 0, 7503f1f70cS猫头猫 color: '#666666', 7603f1f70cS猫头猫 height: rpx(64), 7703f1f70cS猫头猫 fontSize: fontSizeConst.subTitle, 7803f1f70cS猫头猫 textAlignVertical: 'center', 7903f1f70cS猫头猫 includeFontPadding: false, 8003f1f70cS猫头猫 }, 8103f1f70cS猫头猫}); 82