react-native-tab-view
Version:
Tab view component for React Native
63 lines (62 loc) • 2.03 kB
TypeScript
import * as React from 'react';
import { StyleProp, ViewStyle } from 'react-native';
import { PanGestureHandler } from 'react-native-gesture-handler';
import Animated from 'react-native-reanimated';
import { Props as TabBarProps } from './TabBar';
import { Layout, NavigationState, Route, SceneRendererProps, PagerCommonProps } from './types';
declare type Props<T extends Route> = PagerCommonProps & {
position?: Animated.Value<number>;
onIndexChange: (index: number) => void;
navigationState: NavigationState<T>;
renderScene: (props: SceneRendererProps & {
route: T;
}) => React.ReactNode;
renderLazyPlaceholder: (props: {
route: T;
}) => React.ReactNode;
renderTabBar: (props: SceneRendererProps & {
navigationState: NavigationState<T>;
}) => React.ReactNode;
tabBarPosition: 'top' | 'bottom';
initialLayout?: {
width?: number;
height?: number;
};
lazy: boolean;
lazyPreloadDistance: number;
removeClippedSubviews?: boolean;
sceneContainerStyle?: StyleProp<ViewStyle>;
style?: StyleProp<ViewStyle>;
gestureHandlerProps: React.ComponentProps<typeof PanGestureHandler>;
};
declare type State = {
layout: Layout;
};
export default class TabView<T extends Route> extends React.Component<Props<T>, State> {
static defaultProps: {
tabBarPosition: string;
renderTabBar: <P extends Route>(props: TabBarProps<P>) => JSX.Element;
renderLazyPlaceholder: () => null;
keyboardDismissMode: string;
swipeEnabled: boolean;
lazy: boolean;
lazyPreloadDistance: number;
removeClippedSubviews: boolean;
springConfig: {};
timingConfig: {};
gestureHandlerProps: {};
};
state: {
layout: {
width: number;
height: number;
} | {
width: number;
height: number;
};
};
private jumpToIndex;
private handleLayout;
render(): JSX.Element;
}
export {};