Я довольно продвинут в языке iOS Swift, но очень новый в реагировать на нативный фреймворк или язык JavaScript. Я также часами пытался найти правильный учебник для стекового навигатора, но не могу его найти. В настоящее время я использую этот учебник , чтобы изучить основы навигации собственного стека и хочу разделить два экрана на их собственные файлы. По сути, я хочу имитировать Swift с его AppDelegate.swift
и файлами View Controller. Но это выдает ошибку вроде этого:
Нарушение инварианта: недопустимый тип элемента: ожидается строка (для
встроенные компоненты) или класс / функция (для составных компонентов)
но получил: объект. Вы, вероятно, забыли экспортировать свой компонент из
файл, в котором он определен, или вы могли перепутать имя и имя по умолчанию
импорт.
Это была старая ошибка. Новая ошибка сейчас:
TypeError: undefined не является объектом (оценивается как this.props.navigation.navigate)
Эта ошибка находится по адресу:
в HomeScreen (на renderApplication.js: 33)
...
Вот мой текущий код. Это было отредактировано согласно решениям.
App.js:
import React from 'react';
import { Button, AppRegistry } from 'react-native';
import { StackNavigator } from 'react-navigation';
import HomeScreen from './HomeScreen';
import ProfileScreen from './ProfileScreen';
export default HomeScreen;
const App = StackNavigator({
Home: { screen: HomeScreen },
Profile: { screen: ProfileScreen },
});
AppRegistry.registerComponent("TestProject", () => App);
HomeScreen.js:
import React from 'react';
import { Button } from 'react-native';
import { StackNavigator } from 'react-navigation';
export default class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
};
render() {
const { navigate } = this.props.navigation;
return (
<Button
title="Go to Jane's profile"
onPress={() =>
navigate('Profile', { name: 'Jane' })
}
/>
);
}
}
ProfileScreen.js:
import React from 'react';
import { Text } from 'react-native';
import { StackNavigator } from 'react-navigation';
export default class ProfileScreen extends React.Component {
static navigationOptions = {
title: 'Jane Profile',
};
render() {
const { navigate } = this.props.navigation;
return (
<Text>Welcome to Jane profile!</Text>
);
}
}
Я был бы очень признателен за любые указания на любую ошибку и ошибку в моем коде, так как на данный момент я полностью забыл о любых проблемах в моем коде, поскольку я изучаю это сам. Пожалуйста помоги. Первые шаги ребенка всегда труднее всего каждый раз, когда я изучаю новый язык.
В этом случае я пытаюсь создать домашний экран с кнопкой, которая ведет ко второму экрану (профилю) с текстом в нем. Я также знаю, что должен иметь возможность извлечь имя профиля из ProfileScreen
, который отправил HomeScreen
, но я прямо сейчас жестко запрограммировал его, чтобы мне было проще понять решение.