11import React from 'react' ;
2- import type { TabViewItems } from './TabViewNativeComponent' ;
2+ import type {
3+ OnNativeLayout ,
4+ OnPageSelectedEventData ,
5+ OnTabBarMeasured ,
6+ TabViewItems ,
7+ } from './TabViewNativeComponent' ;
38import {
49 type ColorValue ,
510 Image ,
@@ -279,6 +284,35 @@ const TabView = <Route extends BaseRoute>({
279284 onIndexChange ( index ) ;
280285 } ) ;
281286
287+ const handleTabLongPress = React . useCallback (
288+ ( { nativeEvent : { key } } : { nativeEvent : OnPageSelectedEventData } ) => {
289+ const index = trimmedRoutes . findIndex ( ( route ) => route . key === key ) ;
290+ onTabLongPress ?.( index ) ;
291+ } ,
292+ [ trimmedRoutes , onTabLongPress ]
293+ ) ;
294+
295+ const handlePageSelected = React . useCallback (
296+ ( { nativeEvent : { key } } : { nativeEvent : OnPageSelectedEventData } ) => {
297+ jumpTo ( key ) ;
298+ } ,
299+ [ jumpTo ]
300+ ) ;
301+
302+ const handleTabBarMeasured = React . useCallback (
303+ ( { nativeEvent : { height } } : { nativeEvent : OnTabBarMeasured } ) => {
304+ setTabBarHeight ( height ) ;
305+ } ,
306+ [ setTabBarHeight ]
307+ ) ;
308+
309+ const handleNativeLayout = React . useCallback (
310+ ( { nativeEvent : { width, height } } : { nativeEvent : OnNativeLayout } ) => {
311+ setMeasuredDimensions ( { width, height } ) ;
312+ } ,
313+ [ setMeasuredDimensions ]
314+ ) ;
315+
282316 return (
283317 < BottomTabBarHeightContext . Provider value = { tabBarHeight } >
284318 < NativeTabView
@@ -290,19 +324,10 @@ const TabView = <Route extends BaseRoute>({
290324 icons = { renderCustomTabBar ? undefined : resolvedIconAssets }
291325 selectedPage = { focusedKey }
292326 tabBarHidden = { ! ! renderCustomTabBar }
293- onTabLongPress = { ( { nativeEvent : { key } } ) => {
294- const index = trimmedRoutes . findIndex ( ( route ) => route . key === key ) ;
295- onTabLongPress ?.( index ) ;
296- } }
297- onPageSelected = { ( { nativeEvent : { key } } ) => {
298- jumpTo ( key ) ;
299- } }
300- onTabBarMeasured = { ( { nativeEvent : { height } } ) => {
301- setTabBarHeight ( height ) ;
302- } }
303- onNativeLayout = { ( { nativeEvent : { width, height } } ) => {
304- setMeasuredDimensions ( { width, height } ) ;
305- } }
327+ onTabLongPress = { handleTabLongPress }
328+ onPageSelected = { handlePageSelected }
329+ onTabBarMeasured = { handleTabBarMeasured }
330+ onNativeLayout = { handleNativeLayout }
306331 hapticFeedbackEnabled = { hapticFeedbackEnabled }
307332 activeTintColor = { activeTintColor }
308333 inactiveTintColor = { inactiveTintColor }
0 commit comments