1ceb900cdS猫头猫import React, {memo, useState} from 'react'; 2ceb900cdS猫头猫import {StyleSheet, View} from 'react-native'; 3ceb900cdS猫头猫import rpx from '@/utils/rpx'; 4ceb900cdS猫头猫import globalStyle from '@/constants/globalStyle'; 5ceb900cdS猫头猫import {ScrollView} from 'react-native-gesture-handler'; 6ceb900cdS猫头猫import TypeTag from '../../../../components/base/typeTag'; 7*c15039e2S猫头猫 8ceb900cdS猫头猫import useRecommendList from '../../hooks/useRecommendListTags'; 9ceb900cdS猫头猫import SheetList from './sheetList'; 10*c15039e2S猫头猫import {showPanel, hidePanel} from '@/components/panels/usePanel'; 11ceb900cdS猫头猫 12ceb900cdS猫头猫interface IProps { 13ceb900cdS猫头猫 hash: string; 14ceb900cdS猫头猫} 15ceb900cdS猫头猫 16ceb900cdS猫头猫const defaultTag: ICommon.IUnique = { 17ceb900cdS猫头猫 title: '默认', 18ceb900cdS猫头猫 id: '', 19ceb900cdS猫头猫}; 20ceb900cdS猫头猫function SheetBody(props: IProps) { 21ceb900cdS猫头猫 const {hash} = props; 22ceb900cdS猫头猫 23ceb900cdS猫头猫 // 选中的tag 24ceb900cdS猫头猫 const [selectedTag, setSelectedTag] = useState<ICommon.IUnique>(defaultTag); 25ceb900cdS猫头猫 26ceb900cdS猫头猫 // 第一个tag 27ceb900cdS猫头猫 const [firstTag, setFirstTag] = useState<ICommon.IUnique>(defaultTag); 28ceb900cdS猫头猫 29ceb900cdS猫头猫 // 所有tag 30ceb900cdS猫头猫 const tags = useRecommendList(hash); 31ceb900cdS猫头猫 32ceb900cdS猫头猫 return ( 33ceb900cdS猫头猫 <View style={globalStyle.fwflex1}> 34ceb900cdS猫头猫 <ScrollView 35ceb900cdS猫头猫 style={style.headerWrapper} 36ceb900cdS猫头猫 contentContainerStyle={style.header} 37ceb900cdS猫头猫 horizontal> 38ceb900cdS猫头猫 <TypeTag 39ceb900cdS猫头猫 title={firstTag.title} 40ceb900cdS猫头猫 selected={selectedTag.id === firstTag.id} 41ceb900cdS猫头猫 onPress={() => { 42ceb900cdS猫头猫 // 拉起浮层 43ceb900cdS猫头猫 showPanel('SheetTags', { 44ceb900cdS猫头猫 tags: tags?.data ?? [], 45ceb900cdS猫头猫 onTagPressed(tag) { 46ceb900cdS猫头猫 setSelectedTag(tag); 47ceb900cdS猫头猫 setFirstTag(tag); 48ceb900cdS猫头猫 hidePanel(); 49ceb900cdS猫头猫 }, 50ceb900cdS猫头猫 }); 51ceb900cdS猫头猫 }} 52ceb900cdS猫头猫 /> 53ceb900cdS猫头猫 {(tags?.pinned ?? []).map(_ => ( 54ceb900cdS猫头猫 <TypeTag 55ceb900cdS猫头猫 key={`pinned-${_.id}`} 56ceb900cdS猫头猫 title={_.title} 57ceb900cdS猫头猫 selected={selectedTag.id === _.id} 58ceb900cdS猫头猫 onPress={() => { 59ceb900cdS猫头猫 setSelectedTag(_); 60ceb900cdS猫头猫 }} 61ceb900cdS猫头猫 /> 62ceb900cdS猫头猫 ))} 63ceb900cdS猫头猫 </ScrollView> 64ceb900cdS猫头猫 <SheetList tag={selectedTag} pluginHash={hash} /> 65ceb900cdS猫头猫 </View> 66ceb900cdS猫头猫 ); 67ceb900cdS猫头猫} 68ceb900cdS猫头猫 69ceb900cdS猫头猫export default memo(SheetBody, (prev, curr) => prev.hash === curr.hash); 70ceb900cdS猫头猫 71ceb900cdS猫头猫const style = StyleSheet.create({ 72ceb900cdS猫头猫 headerWrapper: { 73ceb900cdS猫头猫 height: rpx(100), 74ceb900cdS猫头猫 flexGrow: 0, 75ceb900cdS猫头猫 }, 76ceb900cdS猫头猫 header: { 77ceb900cdS猫头猫 height: rpx(100), 78ceb900cdS猫头猫 alignItems: 'center', 79ceb900cdS猫头猫 }, 80ceb900cdS猫头猫}); 81