Реагировать на ошибку навигации this.props.navigation.navigat

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

this.props.navigation.navigate

вот мой код. кто знает в чем проблема. Я следую каждому шагу.

    import React, {Component} from 'react';
    import { AppRegistry, View, Text,StyleSheet, TextInput, Image, ScrollView, Button, TouchableOpacity} from 'react-native';
    import { createStackNavigator, createAppContainer } from 'react-navigation';

    import SignUp from './SignUp';

    class Login extends  React.Component{

    constructor(props){
        super(props);
        this.state = { text: 'Useless Placeholder' };
    }
        render(){
    const {navigate} = this.props.navigation;
       return(
          <View>
              <ScrollView showsVerticalScrollIndicator = {false}>
                <View style = {styles.button}>
                         <TouchableOpacity>
                            <Text style = {styles.buttonText}>SIGN IN</Text>
                          </TouchableOpacity>
                       </View>
                        <View style = {styles.createAccount}>
                             <Text style = {styles.createText}
                             onPress = {() => this.props.navigation.navigate("Home")}
                             >Create new account</Text>
                        </View>
               </View>
            </ScrollView>
          </View>

       );
    }

}


module.exports = Login;


const MainNavigator = createStackNavigator({
  Home: {screen: SignUp}
});

export default createAppContainer(MainNavigator);

какой тип ошибок просто this.props.navigation.navigate ? Можете ли вы предоставить полное сообщение?

Vencovsky 12.04.2019 13:38
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
1
1 002
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Экран входа в систему не является частью вашего стека.

const MainNavigator = createStackNavigator({
  Home: {screen: SignUp}
});

Просто сделайте экран отдельный компонент входа, добавьте его в верхнюю часть стека, после чего вы сможете перемещаться.

так

const MainNavigator = createStackNavigator({
  Login:{screen:Login}
  Home: {screen: SignUp}
});

Логин.js

import React, {Component} from 'react';
import { AppRegistry, View, Text,StyleSheet, TextInput, Image, ScrollView, Button, TouchableOpacity} from 'react-native';

    export default class Login extends  React.Component{
    constructor(props){
        super(props);
        this.state = { text: 'Useless Placeholder' };
    }
        render(){
    const {navigate} = this.props.navigation;
       return(
          <View>
              <ScrollView showsVerticalScrollIndicator = {false}>
                <View style = {styles.button}>
                         <TouchableOpacity>
                            <Text style = {styles.buttonText}>SIGN IN</Text>
                          </TouchableOpacity>
                       </View>
                        <View style = {styles.createAccount}>
                             <Text style = {styles.createText}
                             onPress = {() => this.props.navigation.navigate("Home")}
                             >Create new account</Text>
                        </View>
               </View>
            </ScrollView>
          </View>

       );
    }

MainNavigator.js

import React, {Component} from 'react';
    import { AppRegistry, View, Text,StyleSheet, TextInput, Image, ScrollView, Button, TouchableOpacity} from 'react-native';
    import { createStackNavigator, createAppContainer } from 'react-navigation';

import SignUp from './SignUp';
import Login from './Login'


const MainNavigator = createStackNavigator({
  Login: {screen:Login},
  Home: {screen: SignUp}
});

export default createAppContainer(MainNavigator);

просто дайте логин:{экран:Логин}

lovepreet singh 12.04.2019 12:29

я нахожусь в компоненте входа. тогда как это сделать?

user9461494 12.04.2019 12:32

@zeeshan Вы пытаетесь перейти от входа в систему к регистрации в соответствии с вашим кодом, верно?

Paras Korat 12.04.2019 12:36

@ParasKorat да

user9461494 12.04.2019 12:37

@zeeshan просто попробуйте, как я уже упоминал в своем ответе, и ваш корневой файл - MainNavigator.js.

Paras Korat 12.04.2019 12:40

@ParasKorat теперь у меня ошибка. проверьте метод рендеринга APP

user9461494 12.04.2019 12:41

@zeeshan, ты можешь перейти на следующий экран? и еще одно, это также меняет ваш метод onPress, если вы используете const {navigate} = this.props.navigation, затем измените его на <Text style = {styles.createText} onPress = {() =>navigate("Home")} >Create new account</Text>

Paras Korat 12.04.2019 12:46

@ParasKorat мой корневой файл - APP.js, и я использую заставку при загрузке, а затем перенаправляю на экран входа в систему.

user9461494 12.04.2019 12:48

@ParasKorat не может ориентироваться. я вношу твои изменения

user9461494 12.04.2019 12:49

@zeeshan, не могли бы вы добавить свою файловую структуру с кодом, чтобы я помог вам лучше

Paras Korat 12.04.2019 12:50

src -> Главная -> Login.js, SignUp.js, MainNavigator.js и App.js в основном файле\

user9461494 12.04.2019 12:52

Давайте продолжить обсуждение в чате.

Paras Korat 12.04.2019 12:53

вы не добавили свой экран входа в стек вот так

const MainNavigator = createStackNavigator({
  Login : {screen: Login},
  Home: {screen: SignUp}
});

Другие вопросы по теме