Я создаю приложение React Native. Я импортировал createStackNavigator из реагирования навигации. Я могу заставить его работать на моем домашнем экране - я нажимаю кнопку, и это приводит меня к новому компоненту. Это код, который я использую, чтобы перенести его в мой Home.js
// src/components/Home/Home
export class Home extends Component {
render() {
return (
<React.Fragment>
<Button
title="Test button"
onPress={() => this.props.navigation.navigate('Roads')}
/>
<StatusBar />
<Header />
<Menu />
</React.Fragment>
);
}
}
const RootStack = createStackNavigator(
{
Home: Home,
Roads: Roads,
},
{
initialRouteName: 'Home',
}
);
export default class App extends React.Component {
render() {
return <RootStack />;
}
}
Моя домашняя страница занимает меню, в котором есть список элементов меню. Я пытаюсь заставить MenuItems перейти на соответствующие страницы. Когда я пытаюсь ввести навигацию внутри метода визуализации MenuItem.js
, вот так:
// src/components/Roads/Roads
render() {
const { navigate } = this.props.navigation;
console.log(this.props, "props is here");
Я получаю следующее сообщение об ошибке:
TypeError: undefined is not an object (evaluating 'this.props.navigation.navigate')
.
Нужно ли передавать навигатор вниз в реквизит к Menu.js
, а затем к MenuItem.js
? В документах приводятся примеры, но, похоже, это примеры, в которых предполагается, что весь код записан в одном файле, а не в нескольких компонентах.
Правильно ли я настроил это?