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