У меня возникли небольшие проблемы с доступом к this.props.navigation.navigate на дочерних страницах ViewPager. У меня есть страница, на которой есть кнопка «Детали», и после ее нажатия она должна открыть новое отдельное представление (например, новое намеренное действие).
Структура: Страница входа -> нажмите «войти»Кнопка -> открывает MainPage с пользовательским CustomBottomNavigationBar с компонентом ViewPager, который берет {Object} из 5 различных страниц и отображает их следующим образом:
В корневом App.js я уже определил эту конфигурацию:
// App.js
import MainPage from './views/mainpage';
import PageOne from './views/pageoneview';
import PageTwo from './views/pagetwoview';
import PageOneDetailView from './views/PageOneDetailView';
const MainNavigator = createStackNavigator({
Home: {screen: MainPage},
PageOne: {screen: PageOne},
PageTwo: {screen: PageTwo},
PageOneDetailView: {screen: PageOneDetailView}
},
{
headerMode: 'none',
navigationOptions: {
headerVisible: false,
}
});
// mainpage.js
import React, { Component } from 'react';
import {
StyleSheet,
Image,
View,
TouchableOpacity,
ToastAndroid
} from 'react-native';
import PageOne from './homepages/pageoneview';
import PageTwo from './homepages/pagetwoview';
import CustomBottomNavigationBar from './../components/CustomBottomNavigationBar';
export default MainPage extends Component {
constructor(props) {
super(props);
}
screens = () => {
return {
p1: {page: <PageOne/>},
p2: {page: <PageTwo/>}
}
}
render() {
return (
<CustomBottomNavigationBar
screensets={this.screens()}
/>
);
}
}
Теперь в PageOne.js есть кнопка «Детали», и при нажатии она должна открыть новый PageOneDetail.js
// pageoneview.js
import React, { Component } from 'react';
import {
StyleSheet,
Image,
View,
TouchableOpacity,
ToastAndroid
} from 'react-native';
import PageOneDetail from './homepages/PageOneDetailView';
export default PageOne extends Component {
constructor(props) {
super(props);
}
OpenView = (navigateObject, whichScreen) => {
navigateObject(whichScreen);
}
render() {
const {navigate} = this.props.navigation;
return (
<View style={{ flex: 1, alignSelf: 'flex-end' }}>
<TouchableOpacity onPress={() => this.OpenView(navigate, 'PageOneDetailView')}>
<Text> Details </Text>
</TouchableOpacity>
</View>
);
}
}
Ошибка, которую я получаю при приземлениина главной странице: undefined is not an object this.props.navigation.navigate
когда mainpage.js пытается загрузить pageoneview.js
Пожалуйста, помогите мне понять, как решить эту проблему, с которой я столкнулся весь день.
Спасибо.