Сброс экранов на исходную навигацию по умолчанию

Я использую эту библиотеку с нижними вкладками: https://github.com/wix/react-native-navigation

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

route.js для значка дома внизу вкладки выглядит примерно так:

stack: {
  children: [
    {
      component: {
        name: home,
      }
    },
  ],
  options: {
    bottomTab: {
      iconInsets: {top: 6, left: 0, bottom: -6, right: 0},
      titleDisplayMode: 'alwaysHide',
      icon: require('../assets/images/home.png'),
      selectedIconColor: colors.primary,
    }

person RowanX    schedule 31.08.2019    source источник


Ответы (2)


Сначала вам нужно добавить слушателя, если пользователь щелкнет нижнюю вкладку. Вы можете добиться этого с помощью registerbottomtabselectedlistener . Вы можете использовать popToRoot. отправить пользователя в корень стека

// Subscribe
const bottomTabEventListener = Navigation.events().registerBottomTabSelectedListener(({ selectedTabIndex, unselectedTabIndex }) => {
   Navigation.popTo(componentId);  // check selectedTabIndex and send to home
});
...
// Unsubscribe
bottomTabEventListener.remove();

person Mehran Khan    schedule 01.09.2019

Не уверен в опубликованном вами фрагменте, но я думаю, что вы пытаетесь заставить работать нижние вкладки. Это неполно, но, надеюсь, вы на правильном пути.

const AppTabs = createBottomTabNavigator({
  App: AppStack, // stack navigator
  Contacts: ContactsStack, // stack navigator
  Settings: {
    screen: SettingsScreen, // single component import
    navigationOptions: {
      tabBarLabel: 'Settings',
      tabBarIcon: ({ focused }) => (
        <Ionicons
          size={26}
          name={Platform.OS === 'ios' ? 'ios-settings' : 'settings'}
          style={{ marginBottom: -3 }}
          color={focused ? "red" : "gray"}
        />
      ),
    }
  },
}, {
  initialRouteName: 'App',
  tabBarPosition: 'bottom',
  swipeEnabled: true,
  tabBarOptions: {
    activeTintColor: 'green',
    inactiveTintColor: 'gray',
    labelStyle: {
      fontSize: 16,
    },
    tabStyle: { marginBottom: -10 }
  }
});

export default createAppContainer(createSwitchNavigator({
  AuthLoading: AuthLoadingScreen,
  App: AppTabs,
  Auth: AuthStack,
}, {
  initialRouteName: 'AuthLoading',
}));
person KMims    schedule 01.09.2019