Как открыть модал из обычных стеков навигатора? - PullRequest
0 голосов
/ 02 июля 2018

Мне нужно открыть и закрыть модальный режим из «обычного» / навигатора потока карт. Я разделил вкладки, вышел из системы (поток аутентификации) и поток основного экрана в отдельных навигаторах. Также пытался отделить модальные навигаторы в их стеке над остальными.

Это довольно простые требования к потоку приложений, удивило, что в документах нет примеров

const AuthScreen = createStackNavigator(
    {
        Landing: { screen: Landing },
        Login: { screen: Login },
        Signup: { screen: Signup },
        Terms: { screen: Terms }
    },
    {
        mode: "modal"
    }
);

const TabNavigator = createBottomTabNavigator(
    {
        Home: { screen: Home },
        Suppliers: { screen: Suppliers },
        Shortlist: { screen: Shortlist },
        "To-Do": { screen: ToDo },
        Inspiration: { screen: Inspiration }
    },
    {
        navigationOptions: ({ navigation }) => ({
            tabBarIcon: ({ focused, tintColor }) => {
                const { routeName } = navigation.state;

                if (routeName == "Home") {
                    return <Image source={require("../assets/icons/home.png")} />;
                } else if (routeName == "Suppliers") {
                    return <Image source={require("../assets/icons/suppliers.png")} />;
                } else if (routeName == "Shortlist") {
                    return <Image source={require("../assets/icons/shortlist.png")} />;
                } else if (routeName == "To-Do") {
                    return <Image source={require("../assets/icons/todo.png")} />;
                } else if (routeName == "Inspiration") {
                    return <Image source={require("../assets/icons/inspiration.png")} />;
                }
            }
        }),
        tabBarOptions: {
            activeTintColor: "#F19B75",
            inactiveTintColor: "#4A4A4A",
            style: {
                backgroundColor: "white",
                elevation: 0,
                borderTopWidth: 0
            },
            labelStyle: {
                fontSize: 10,
                fontFamily: "Lato-Light"
            }
        }
    }
);

const ModalsStack = createStackNavigator(
    {
        FilterSearch: {
            screen: FilterSearch
        },
        LocationSearch: {
            screen: LocationSearch
        }
    },
    {
        mode: "modal",
        navigationOptions: {
            headerStyle: { backgroundColor: "#fff", elevation: 0, borderBottomWidth: 0 },
            headerTitleStyle: {
                fontWeight: "normal",
                fontFamily: "Lora",
                fontSize: 18
            }
        }
    }
);

const HomeStack = createStackNavigator(
    {
        Tabs: TabNavigator,
        CategoryItem: {
            screen: CategoryItem
        },
        SupplierProfile: {
            screen: SupplierProfile
        }
    },
    {
        navigationOptions: {
            headerStyle: {
                backgroundColor: "white",
                borderBottomWidth: 0,
                elevation: 0
            }
        },
        cardStyle: {
            backgroundColor: "white"
        },
        headerTransitionPreset: "uikit"
    }
);

const AppNavigator = createSwitchNavigator({
    Auth: AuthScreen,
    Home: HomeStack
});

Итак, я хочу иметь возможность открыть FilterSearch с экрана CategoryItem.

1 Ответ

0 голосов
/ 18 июля 2018

Может быть, вы можете добавить его также в HomeStack?

const HomeStack = createStackNavigator(
  {
    Tabs: TabNavigator,
    CategoryItem: {
      screen: CategoryItem
    },
    SupplierProfile: {
      screen: SupplierProfile
    },
    FilterSearch: {
      screen: FilterSearch,
      mode: 'modal',
      navigationOptions: {
        headerStyle: { backgroundColor: '#fff', elevation: 0, borderBottomWidth: 0 },
        headerTitleStyle: {
          fontWeight: 'normal',
          fontFamily: 'Lora',
          fontSize: 18
        }
      }
    }
  },
  {
    navigationOptions: {
      headerStyle: {
        backgroundColor: 'white',
        borderBottomWidth: 0,
        elevation: 0
      }
    },
    cardStyle: {
      backgroundColor: 'white'
    },
    headerTransitionPreset: 'uikit'
  }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...