Я создал приложение с несколькими страницами для навигации, и оно отлично работает, когда я отправляю запросы навигации с дочерних страниц (goBack или navigate ('...')). Проблема в том, что мне нужно переключать страницы из класса, который создал AppContainer
. Это выглядит сложнее. Я пытался несколькими способами с ссылками, но все время функция навигации не доступна. Я хочу создать sh домашнюю страницу в функции обратного вызова BasicFooter
. Я пытался использовать диспетчеризацию, но та же проблема. Я не уверен, возможно ли вообще заставить его работать по ссылке AppContainer
или мне нужно построить структуру с
<NavigationContainer>
<Stack.Navigator>{/* ... */}</Stack.Navigator>
</NavigationContainer>
Это мой код:
export default class App extends React.Component {
constructor(props) {
super(props);
this.refNavi = React.createRef();
this.goToMain_audio = this.goToMain_audio.bind(this);
}
goToMain_audio() {
console.log("Object ", this.refNavi.current.navigation.navigate('Home')); //<==Undefined!
}
render() {
return ( <
View style = {
styles.container
} >
<AppContainer ref = {
this.refNavi
}
style = {
styles.container
} </AppContainer>
<View style = {
styles.footer1
}>
<BasicFooter style = {
styles.footer1
}
clickedAudio = {
this.goToMain_audio
}
clickedMood = {
this.refNavi.current.navigate('Home')
} //<== Undefined!
>
<
/BasicFooter> </View>
}
}
const AppNavigator = createStackNavigator({
Home: {
screen: MainScreen,
},
SettingsPage: {
screen: Settings,
},
SettingsMain: {
screen: SettingsMain,
},
ConnectionPage: {
screen: Connection,
}
}, {
initialRouteName: "Home",
transitionConfig,
header: null,
headerMode: 'none'
});
const AppContainer = createAppContainer(AppNavigator);