import * as React from 'react'; import { StyleSheet, FlatList, ListRenderItem } from 'react-native'; import { RouteViewPortal, RouteContentProps, NavigatorView, RouteViewEvents, NavRoutesConfigMap } from 'react-native-ios-navigator'; import { EventListItem } from './EventListItem'; import { RouteA } from './RouteA'; import { RouteB } from './RouteB'; import type { EventData, RecordEvent, RouteProps } from './SharedTypes'; export const RouteKeys = { RouteA: 'RouteA', RouteB: 'RouteB', }; const ROUTES: NavRoutesConfigMap = { [RouteKeys.RouteA]: { routeOptionsDefault: { largeTitleDisplayMode: 'never', }, renderRoute: () => ( ), }, [RouteKeys.RouteB]: { routeOptionsDefault: { largeTitleDisplayMode: 'never', }, renderRoute: () => ( ), }, }; type NavigatorTest08State = { events: Array; }; export class NavigatorTest08 extends React.Component { constructor(props: RouteContentProps){ super(props); this.state = { events: [], }; }; recordEvent: RecordEvent = (event) => { this.setState((prevState) => ({ events: [event, ...prevState.events], })); }; _handleKeyExtractor = (item: EventData) => { return `${item.timestamp}`; }; _renderEventListItem: ListRenderItem = ({item, index}) => { const { events } = this.state; const eventCount = events.length; return( ); }; render(){ const sharedRouteProps: RouteProps = { recordEvent: this.recordEvent, }; return( { this.setState({ events: [], }); }} /> { this.recordEvent({ eventType: 'onNavRouteWillShow', routeKey: nativeEvent.routeKey, routeIndex: nativeEvent.routeIndex, timestamp: Date.now(), }); }} onNavRouteDidShow={({nativeEvent}) => { this.recordEvent({ eventType: 'onNavRouteDidShow', routeKey: nativeEvent.routeKey, routeIndex: nativeEvent.routeIndex, timestamp: Date.now(), }); }} /> ); }; }; const styles = StyleSheet.create({ list: { flex: 1, }, listContentContainer: { paddingVertical: 10, paddingHorizontal: 10, }, bottomNavigator: { flex: 1, }, });