Как вызвать пользовательскую функцию из tabBarOnPress в React Navigation - PullRequest
0 голосов
/ 03 января 2019

Мне нужно запустить пользовательскую функцию, когда нажата вкладка, чтобы сохранить вкладку routeName в Redux.

Обычно вы бы ссылались на функцию с this.myFunc или this.props.myFunc.Но я не могу понять, как получить доступ к функции через tabBarOnPress в createBottomTabNavigator.Это вообще возможно?

У кого-нибудь есть идеи?

const AppStack =  createBottomTabNavigator({
  Home: {screen: HomeStack},
  Requests: {screen: RequestsStack}
}, {
  navigationOptions: ({navigation}) => ({
    tabBarOnPress: ({navigation, defaultHandler}) => {

      const { state } = navigation;

      if(state.routes){
        if(state.routes[0].routeName === 'home'){

          // need to call custom function here

        } else if(state.routes[0].routeName === 'requests'){

          // need to call custom function here

        }
      }

      defaultHandler();
    }
  })
})




const Root = createSwitchNavigator({
  Auth: AuthStack,
  App: AppStack,
});

1 Ответ

0 голосов
/ 04 января 2019

С таким большим количеством ссылок на «this» в компоненте я размышлял о том, что могу вызывать функцию без ссылки на «this».

Мне удалось получить эту работу ниже:

const AppStack =  createBottomTabNavigator({
  Home: {screen: HomeStack},
  Requests: {screen: RequestsStack}
}, {
  navigationOptions: ({navigation}) => ({
    tabBarOnPress: ({navigation, defaultHandler}) => {

      const { state } = navigation;

      if(state.routes){
        if(state.routes[0].routeName === 'home'){

          store.dispatch(myFunction('home')) 

        } else if(state.routes[0].routeName === 'requests'){

          store.dispatch(myFunction('requests'))

        }
      }

      defaultHandler();
    }
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...