1*03f1f70cS猫头猫import React, {useState} from 'react'; 2*03f1f70cS猫头猫import {StyleSheet, Text, View} from 'react-native'; 3*03f1f70cS猫头猫import rpx from '@/utils/rpx'; 4*03f1f70cS猫头猫import {useNavigation, useRoute} from '@react-navigation/native'; 5*03f1f70cS猫头猫import MusicBar from '@/components/musicBar'; 6*03f1f70cS猫头猫import SearchResult from './searchResult'; 7*03f1f70cS猫头猫import StatusBar from '@/components/base/statusBar'; 8*03f1f70cS猫头猫import {Appbar, Searchbar} from 'react-native-paper'; 9*03f1f70cS猫头猫import useColors from '@/hooks/useColors'; 10*03f1f70cS猫头猫import {SafeAreaView} from 'react-native-safe-area-context'; 11*03f1f70cS猫头猫import {fontSizeConst} from '@/constants/uiConst'; 12*03f1f70cS猫头猫 13*03f1f70cS猫头猫interface ISearchMusicListProps {} 14*03f1f70cS猫头猫 15*03f1f70cS猫头猫function filterMusic(query: string, musicList: IMusic.IMusicItem[]) { 16*03f1f70cS猫头猫 if (query?.length === 0) { 17*03f1f70cS猫头猫 return []; 18*03f1f70cS猫头猫 } 19*03f1f70cS猫头猫 return musicList.filter(_ => 20*03f1f70cS猫头猫 `${_.title} ${_.artist} ${_.album} ${_.platform}`.includes(query.trim()), 21*03f1f70cS猫头猫 ); 22*03f1f70cS猫头猫} 23*03f1f70cS猫头猫 24*03f1f70cS猫头猫export default function SearchMusicList(props: ISearchMusicListProps) { 25*03f1f70cS猫头猫 const route = useRoute<any>(); 26*03f1f70cS猫头猫 const navigation = useNavigation(); 27*03f1f70cS猫头猫 const musicList: IMusic.IMusicItem[] = route.params?.musicList ?? []; 28*03f1f70cS猫头猫 const [result, setResult] = useState<IMusic.IMusicItem[]>([]); 29*03f1f70cS猫头猫 const [query, setQuery] = useState(''); 30*03f1f70cS猫头猫 31*03f1f70cS猫头猫 console.log(musicList); 32*03f1f70cS猫头猫 33*03f1f70cS猫头猫 const colors = useColors(); 34*03f1f70cS猫头猫 35*03f1f70cS猫头猫 const onChangeSearch = (_: string) => { 36*03f1f70cS猫头猫 _ = _.trim(); 37*03f1f70cS猫头猫 setQuery(_); 38*03f1f70cS猫头猫 setResult(filterMusic(_, musicList)); 39*03f1f70cS猫头猫 }; 40*03f1f70cS猫头猫 41*03f1f70cS猫头猫 return ( 42*03f1f70cS猫头猫 <SafeAreaView style={style.wrapper}> 43*03f1f70cS猫头猫 <StatusBar></StatusBar> 44*03f1f70cS猫头猫 <Appbar.Header style={[style.appbar, {backgroundColor: colors.primary}]}> 45*03f1f70cS猫头猫 <Appbar.BackAction 46*03f1f70cS猫头猫 onPress={() => { 47*03f1f70cS猫头猫 navigation.goBack(); 48*03f1f70cS猫头猫 }} 49*03f1f70cS猫头猫 /> 50*03f1f70cS猫头猫 <Searchbar 51*03f1f70cS猫头猫 style={style.searchBar} 52*03f1f70cS猫头猫 inputStyle={style.input} 53*03f1f70cS猫头猫 placeholder="在列表中搜索歌曲" 54*03f1f70cS猫头猫 value={query} 55*03f1f70cS猫头猫 onChangeText={onChangeSearch}></Searchbar> 56*03f1f70cS猫头猫 </Appbar.Header> 57*03f1f70cS猫头猫 <SearchResult result={result}></SearchResult> 58*03f1f70cS猫头猫 <MusicBar></MusicBar> 59*03f1f70cS猫头猫 </SafeAreaView> 60*03f1f70cS猫头猫 ); 61*03f1f70cS猫头猫} 62*03f1f70cS猫头猫 63*03f1f70cS猫头猫const style = StyleSheet.create({ 64*03f1f70cS猫头猫 wrapper: { 65*03f1f70cS猫头猫 width: rpx(750), 66*03f1f70cS猫头猫 flex: 1, 67*03f1f70cS猫头猫 }, 68*03f1f70cS猫头猫 appbar: { 69*03f1f70cS猫头猫 shadowColor: 'transparent', 70*03f1f70cS猫头猫 backgroundColor: '#2b333eaa', 71*03f1f70cS猫头猫 }, 72*03f1f70cS猫头猫 searchBar: { 73*03f1f70cS猫头猫 minWidth: rpx(375), 74*03f1f70cS猫头猫 flex: 1, 75*03f1f70cS猫头猫 borderRadius: rpx(64), 76*03f1f70cS猫头猫 height: rpx(64), 77*03f1f70cS猫头猫 color: '#666666', 78*03f1f70cS猫头猫 }, 79*03f1f70cS猫头猫 input: { 80*03f1f70cS猫头猫 padding: 0, 81*03f1f70cS猫头猫 color: '#666666', 82*03f1f70cS猫头猫 height: rpx(64), 83*03f1f70cS猫头猫 fontSize: fontSizeConst.subTitle, 84*03f1f70cS猫头猫 textAlignVertical: 'center', 85*03f1f70cS猫头猫 includeFontPadding: false, 86*03f1f70cS猫头猫 }, 87*03f1f70cS猫头猫}); 88