react-native-navigation не может перейти на другую страницу

Я искал и сравнивал его с правильными решениями, ничего не выглядело неправильно, но я почти получил экран ошибки, показанный ниже;

введите здесь описание изображения

Что не так с навигационным кодом здесь;

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TouchableOpacity
} from 'react-native';
import { StackNavigator } from 'react-navigation';
import About from './app/components/About';

export default class Home extends Component {
  static navigationOptions = {
    title: 'Welcome',
  };
  navigateToAbout(){
    const { navigate } = this.props.navigation;
    navigate('About')
  }

  render() {

    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={()=>this.navigateToAbout()}>
          <Text>Go to About Page</Text>
        </TouchableOpacity>
      </View>
    );
  }
}
const SimpleApp = StackNavigator({
  Home: { screen: Home },
  About: { screen: About },
});

AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

person TyForHelpDude    schedule 12.08.2017    source источник
comment
Возможно, это связано с этим: stackoverflow.com/questions /44538072/   -  person nidaorhan    schedule 13.08.2017
comment
эти вопросы помечены как реакция-нативная-навигация, и вы используете реакцию-навигацию   -  person rfdc    schedule 21.07.2018


Ответы (2)


Я думаю, что ваш код в порядке, если вам не нужно привязывать метод (обычно я использую функцию стрелки, но это нормально, если вы хотите привязать метод в своем конструкторе), возможно, вы можете попробовать так:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TouchableOpacity
} from 'react-native';
import { StackNavigator } from 'react-navigation';
import About from './app/components/About';

export default class Home extends Component {
  static navigationOptions = {
    title: 'Welcome',
  }

  navigateToAbout = () => {
    this.props.navigation.navigate('About');
  }

  render() {
    const { navigate } = this.props.navigation;
    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={ this._navigateToAbout }
          <Text>Go to About Page</Text>
        </TouchableOpacity>
      </View>
    );
  }
}
const SimpleApp = StackNavigator({
  Home: { screen: Home },
  About: { screen: About },
});

AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

Я надеюсь, что это может помочь вам :)

person Satrio Adi Prabowo    schedule 13.08.2017
comment
undefined не является объектом (оценка ошибки this.props.navigation). - person Ananta Prasad; 13.06.2018

Вы не подключили свой домашний компонент с навигацией, вы должны передать метод navigation объекту mapDispatchToProps метода connect.

Вот пример:

import { connect } from 'react-redux'
import { NavigationActions } from 'react-navigation'

const navigate = NavigationActions.navigate

export class Home extends Component {
  static navigationOptions = ({ navigation }) => ({
    title: 'Welcome',
  })
  static propTypes = {
    navigate: T.func.isRequired,
  }

  navigateToAbout(){
    const { navigate } = this.props.navigation;
    navigate({ routeName: 'About' })
  }

  render() {

    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={()=>this.navigateToAbout()}>
          <Text>Go to About Page</Text>
        </TouchableOpacity>
      </View>
    );
  }
}

export default connect(null, { navigate })(Home)
person mkatanski    schedule 12.08.2017