Реактивная навигация: как вызвать метод внутри главной страницы из пользовательского заголовка в навигации - PullRequest
0 голосов
/ 11 января 2020

Я создал createMaterialTopTabNavigator:

const topSurvayorsNavigator = createMaterialTopTabNavigator({
    ActiveSurveyor: {
        screen: MomayezanScreen,
        params: { status: 1 },
    },
    DeActiveSurveyor: {
        screen: MomayezanScreen,
        params: { status: 0 },
    }
}, {
    swipeEnabled: true,
    tabBarOptions: {
        labelStyle: {
            fontSize: 12
        },
        activeTintColor: Colors.darkGray
    }
});

Я добавил этот навигатор в навигацию по стеку:

const AuditMomayezanNavigator = createStackNavigator({
    Dashboard: DashboardScreen,
    ListSurveyor: {
        screen: topSurvayorsNavigator,
        navigationOptions: ({ navigation }) => {
            switch (navigation.state.routes[navigation.state.index]["routeName"]) {
                case "ActiveSurveyor":
                    console.log("ActiveSurveyor")
                    return {
                        header: () => <CustomHeader
                            title='page1' 
                            onTermSubmit={() => searchApi(0)}
                            />
                    }

                case "DeActiveSurveyor":
                    console.log("DeActiveSurveyor")
                    return {
                        header: () => <CustomHeader
                            title='page2' 
                            onTermSubmit={() => searchApi(1)}
                            />
                    }
                default:
                    return { title: (navigation.state.routes[navigation.state.index]["routes"])[(navigation.state.routes[navigation.state.index]["index"])].routeName }
            }
        }
    },
    Detail: SurveyorDetailsScreen,
}, {
    defaultNavigationOptions: defaultNavOptions
});

Как вы можете видеть, я использую собственный заголовок для навигации по стеку:

header: () => <CustomHeader
                  title='page1' 
                  onTermSubmit={() => searchApi(1)}
                  />

В пользовательском представлении мне нужно отправить метод в виде onTermSubmit prop как searchApi с параметром. Как я могу вызвать searchApi (число) внутри MomayezanScreen страницы из навигатора?

1 Ответ

0 голосов
/ 11 января 2020

https://reactnavigation.org/docs/en/header-buttons.html См. Раздел взаимодействия заголовка с компонентом

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