React-native: невозможно прочитать свойство "navigate" неопределенного

SameerShaik спросил: 28 марта 2018 в 02:58 в: javascript

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

this.props возвращается только {}. Не совсем уверен, почему.

login.component.js

import React, {Component} from 'react';
import {NavigationActions} from 'react-navigation';import {
  Platform,
  StyleSheet,
  Text,
  View,
  TextInput,
  TouchableOpacity,
  Touchable,
  Image,
  Button
} from 'react-native';import { handleFbLogin } from '../../config/authConfig/';class Login extends Component {  render () {
    console.log("this.props")
    console.log(this.props)    return (
    <View style={{flex: 1,backgroundColor: '#37afa6'}}>
        <Button
          title="Go to Details"
          onPress={() => this.props.navigation.navigate('setupProfile')}
        />
    </View>    );
  }
}export default Login;

routes / index.js

import {StackNavigator} from 'react-navigation';
import Login from '../pages/Login.page';
import SetupProfile from '../pages/setupProfile.page';const Config = {
  navigation: {
    login: {
      screen: Login
    },
    setupProfile: {
      screen: SetupProfile,
    }
  }
}export default Config;

App.container.js

import React, {Component} from 'react';
import Login from './pages/Login.page';
import {connect} from 'react-redux';
import Router from './routes';import {
  Platform,
  StyleSheet,
  Text,
  View,
  TextInput
} from 'react-native';class App extends Component {
  render () {
    return (
          <Router /> 
    );
  }
}export default App;

index.js (точка запуска):

import { AppRegistry } from 'react-native';
import { StackNavigator } from 'react-navigation';
import app from './app/index';
import Config from './app/routes/index';export const AppNavigator = StackNavigator(Config.navigation,{initialRouteName : 'login'});AppRegistry.registerComponent('BuddApp', () => AppNavigator);export default app;

Я могу загрузить initalscreen после этих изменения, но при попытке навигации по-прежнему получать ту же ошибку.


1 ответ

rob-art ответил: 29 марта 2018 в 07:51

РЕДАКТИРОВАТЬ:

Я получил это. Вы забыли конструктор на экране входа в систему, поэтому ваши реквизиты пусты:

constructor(props) {
    super(props);
}

ПРЕДЫДУЩИЙ ОТВЕТ:

Без полного код, я не могу понять, в чем именно проблема, но я дам вам пример использования реактивной навигации:

в вашем index.js (начальная точка вашего приложения):

import { AppRegistry } from 'react-native';
import { StackNavigator } from 'react-navigation';export const AppNavigator = StackNavigator(Config.navigation);
AppRegistry.registerComponent('appName', () => AppNavigator);

В конфигурации навигации:

const Config = {
navigation: {
  login: {
     screen: Login
  },
  setupProfile: {
     screen: SetupProfile,
  }
 }
}

Первый объект, найденный в конфигурации навигации, - это запуск вашего приложения.

Теперь вы можете использовать функцию навигации на странице входа в систему с помощью navigate:

this.props.navigation.navigate('setupProfile')

Если заполнить AppRegistry, все должно работать нормально.

I надеюсь, это поможет!

SameerShaik ответил: 28 марта 2018 в 02:14
Обновленный код, как вы предложили, но не помог. пожалуйста, обратитесь к вопросу для обновления кода.
rob-art ответил: 29 марта 2018 в 07:52
Я обновил свой ответ, можете ли вы подтвердить, что эта проблема была проблемой?