import React, { useEffect, useRef, useState } from 'react' import PropTypes from 'prop-types' import { Dimensions, FlatList, View } from 'react-native' import { createNativeStackNavigator } from 'react-native-screens/native-stack' import SegmentedControl from '@react-native-community/segmented-control' import { Feather } from '@expo/vector-icons' import Timeline from './Timeline' import Account from 'src/stacks/Shared/Account' import Hashtag from 'src/stacks/Shared/Hashtag' import Toot from 'src/stacks/Shared/Toot' import Webview from 'src/stacks/Shared/Webview' const Stack = createNativeStackNavigator() function Page ({ item: { page } }) { return ( ) } export default function TimelinesCombined ({ name, content }) { const [segment, setSegment] = useState(0) const [renderHeader, setRenderHeader] = useState(false) const [segmentManuallyTriggered, setSegmentManuallyTriggered] = useState( false ) useEffect(() => { const nbr = setTimeout(() => setRenderHeader(true), 50) return }, []) const horizontalPaging = useRef() return ( renderHeader ? ( ) : null, headerCenter: () => renderHeader ? ( { setSegmentManuallyTriggered(true) setSegment(nativeEvent.selectedSegmentIndex) horizontalPaging.current.scrollToIndex({ index: nativeEvent.selectedSegmentIndex }) }} style={{ width: 150, height: 30 }} /> ) : null }} > {() => ( page} renderItem={({ item, index }) => { return }} ref={horizontalPaging} bounces={false} getItemLayout={(data, index) => ({ length: Dimensions.get('window').width, offset: Dimensions.get('window').width * index, index })} horizontal onMomentumScrollEnd={() => setSegmentManuallyTriggered(false)} onScroll={({ nativeEvent }) => !segmentManuallyTriggered && setSegment( nativeEvent.contentOffset.x <= Dimensions.get('window').width / 2 ? 0 : 1 ) } pagingEnabled showsHorizontalScrollIndicator={false} /> )} {} }} /> ({ title: `#${decodeURIComponent(route.params.hashtag)}` })} /> ({ title: '对话' })} /> ({ // title: `${route.params.domain}` // })} /> ) } TimelinesCombined.propTypes = { name: PropTypes.string.isRequired, content: PropTypes.arrayOf( PropTypes.exact({ title: PropTypes.string.isRequired, page: Timeline.propTypes.page }) ).isRequired }