Где разместить функцию стека сброса в навигаторе? - PullRequest
0 голосов
/ 11 апреля 2019

Я впервые работаю в React Native и пытаюсь сбросить навигацию по стеку, когда пользователь нажимает на другой экран. Я создал функцию resetStack над всеми навигаторами, но не могу понять, где ее вызывать, чтобы она работала. Я некоторое время снимал в темноте, поэтому любые входные данные приветствуются. Заранее спасибо!

Я пробовал несколько разных мест. В навигационных параметрах, ниже этого, в навигаторе, который объединяет их все. Я могу поделиться большим кодом, если это необходимо.

resetStack = () =>{
  this.props.navigation
  .dispatch(StackActions.reset({
    index: 0,
    actions: [
      NavigationActions.navigate({
        routeName: Home
const HomeStack = createStackNavigator({

  Home: HomeScreen,
})

HomeStack.navigationOptions = {
  tabBarOptions: {
    labelStyle: {
      fontSize: 7,
    },  
    showIcon: true,
    style: {
      backgroundColor: Colors.starsBlue,
    },
    indicatorStyle: {
      backgroundColor: "transparent",
    }
  },
  tabBarPosition: 'bottom',
  tabBarLabel: 'Home',
  tabBarIcon: ({ focused }) => (
    <TabBarIcon
      focused={focused}
      name={
        Platform.OS === 'ios'
          ? 'ios-home'
          : 'md-home'
      }
    />

  ),
}

1 Ответ

0 голосов
/ 11 апреля 2019

Я проверил решение, которое вы пробовали.Попробуйте заменить

onPress={() => { this.handleHomePressed() }}

на

 onPress={() =>this.handleHomePressed() }

внутри handleHomePressed ():

handleHomePressed(){
    return this.props
               .navigation
               .dispatch(NavigationActions.reset(
                 {
                    index: 0,
                    actions: [
                      NavigationActions.navigate({ routeName: 'Home'})
                    ]
                  }));
  }

Надеюсь, что это работает!

...