From 325c65aa5fa2833b10fb8903a3d90d03244fa67d Mon Sep 17 00:00:00 2001 From: Ashoat Tevosyan Date: Wed, 16 May 2018 09:38:39 -0400 Subject: [PATCH] fix: fix tabBarOnPress with MaterialTopTabs and fix isFocused (#21) * Hook up tabBarOnPress * Move onTabPress logic to createTabNavigator * Use old logic for determining focus state * Use navigation.isFocused() * Reorder jumpTo/onTabPress * react-native-tab-view@0.0.78 --- packages/tabs/package.json | 2 +- .../createMaterialTopTabNavigator.js | 9 +------- packages/tabs/src/utils/createTabNavigator.js | 21 ++++++------------- packages/tabs/src/views/BottomTabBar.js | 2 +- 4 files changed, 9 insertions(+), 25 deletions(-) diff --git a/packages/tabs/package.json b/packages/tabs/package.json index 5a9ec5ff..b8f82f8f 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -42,7 +42,7 @@ "prop-types": "^15.6.0", "react-lifecycles-compat": "^1.0.2", "react-native-safe-area-view": "^0.7.0", - "react-native-tab-view": "~0.0.77" + "react-native-tab-view": "~0.0.78" }, "devDependencies": { "@expo/vector-icons": "^6.2.0", diff --git a/packages/tabs/src/navigators/createMaterialTopTabNavigator.js b/packages/tabs/src/navigators/createMaterialTopTabNavigator.js index 765df706..03688e18 100644 --- a/packages/tabs/src/navigators/createMaterialTopTabNavigator.js +++ b/packages/tabs/src/navigators/createMaterialTopTabNavigator.js @@ -45,14 +45,6 @@ class TabView extends React.PureComponent { return route.routeName; }; - _getOnPress = (previousScene, { route }) => { - const { descriptors } = this.props; - const descriptor = descriptors[route.key]; - const options = descriptor.options; - - return options.tabBarOnPress; - }; - _getTestIDProps = ({ route, focused }) => { const { descriptors } = this.props; const descriptor = descriptors[route.key]; @@ -107,6 +99,7 @@ class TabView extends React.PureComponent { getLabelText={this.props.getLabelText} getTestIDProps={this._getTestIDProps} renderIcon={this._renderIcon} + onTabPress={this.props.onTabPress} /> ); }; diff --git a/packages/tabs/src/utils/createTabNavigator.js b/packages/tabs/src/utils/createTabNavigator.js index 11fc7f85..6d9ae6cb 100644 --- a/packages/tabs/src/utils/createTabNavigator.js +++ b/packages/tabs/src/utils/createTabNavigator.js @@ -74,23 +74,14 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) { const { descriptors } = this.props; const descriptor = descriptors[route.key]; const { navigation, options } = descriptor; + const focused = navigation.isFocused(); if (options.tabBarOnPress) { - options.tabBarOnPress({ - navigation, - }); - } else { - const isFocused = - this.props.navigation.state.index === - this.props.navigation.state.routes.indexOf(route); - - if (isFocused) { - if (route.hasOwnProperty('index') && route.index > 0) { - navigation.dispatch(StackActions.popToTop({ key: route.key })); - } else { - // TODO: do something to scroll to top - } - } + options.tabBarOnPress({ navigation }); + } else if (focused && route.hasOwnProperty('index') && route.index > 0) { + navigation.dispatch(StackActions.popToTop({ key: route.key })); + } else if (focused) { + // TODO: do something to scroll to top } }; diff --git a/packages/tabs/src/views/BottomTabBar.js b/packages/tabs/src/views/BottomTabBar.js index 758bc2de..61e2c393 100644 --- a/packages/tabs/src/views/BottomTabBar.js +++ b/packages/tabs/src/views/BottomTabBar.js @@ -201,8 +201,8 @@ class TabBarBottom extends React.Component { { - jumpTo(route.key); onTabPress({ route }); + jumpTo(route.key); }} >