React Navigation 5 передать параметры на экран внутри вложенного навигатора - PullRequest
0 голосов
/ 12 февраля 2020

Мы переносим приложение в React Navigation 4 на React Navigation 5. В проекте есть BottomTabNavigator, который имеет для одного из своих маршрутов вложенный TopTabNavigator с тремя вкладками. Одна из вкладок в BottomTabNavigator при нажатии переходит к экрану сортировки, где вы выбираете параметр сортировки для сортировки, а затем переходит к «ожидающему» маршруту, добавляя выбранный параметр сортировки, который должен достигнуть одного из трех экранов списка внутри TopTabNavigator. , В настоящее время я получаю на этих экранах значение route.params, равное нулю, которое, как я полагаю, вызывает другой навигатор в середине (topTabNavigator).

BottomTabNavigator

    <BottomTabsNavigator.Navigator
      tabBar={props => <CustomTabBar {...props} />}
      initialRouteName="Pending"
    >
      <BottomTabsNavigator.Screen name="Pending" component={createTopTabsNavigator} />
      <BottomTabsNavigator.Screen name="Sort" component={SortScreen} />
      <BottomTabsNavigator.Screen name="Tab 3" component={Fragment} />
      <BottomTabsNavigator.Screen name="Tab 4" component={Fragment} /> 
      <BottomTabsNavigator.Screen name="Tab 5" component={Fragment} />
      <BottomTabsNavigator.Screen name="Filter" component={Fragment} />
    </BottomTabsNavigator.Navigator>

Вкладка SortScreen:

    handleOnPress(item: { text: string; value: string; }): void {
        const {navigation} = this.props;

        const param = {orderBy: item.value};
        navigation.navigate('Pending', param);
    }

    render(){
        return(
            <View>
                <FlatList
                    data={orderOptions}
                    renderItem={({ item }) => (
                        <ListItem style={{ borderBottomWidth: 0 }} onPress={() => this.handleOnPress(item)}>
                            <Body>
                                <Text>{item.text}</Text>
                            </Body>
                        </ListItem>
                    )}
                    keyExtractor={item => item.text}
                />
            </View>
        );
    }

createTopTabsNavigator:

    <TopTabsNavigator.Navigator>
      <TopTabsNavigator.Screen name="List1" component={Screen1} />
      <TopTabsNavigator.Screen name="List2" component={Screen2} />
      <TopTabsNavigator.Screen name="List3" component={Screen3} />
    </TopTabsNavigator.Navigator>

Рука с этой проблемой очень ценится

1 Ответ

1 голос
/ 12 февраля 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...