Как я могу перемещаться от одного экрана к другому с помощью нажатия кнопки с помощью стекового навигатора? - PullRequest
1 голос
/ 14 мая 2019

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

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

export default class LoginForm extends Component {
    startRegistration() {
            this.props.navigation.navigate('Registration');
    }

<TouchableOpacity onPress={this.startRegistration} style={style
s.buttonRegister}>
           <Text style={styles.buttonText}>REGISTER</Text>
</TouchableOpacity>

Когда нажимается кнопка регистрации, она вызывает функцию startRegistration.Вот мой класс App.js:

import React, {Component} from "react";
import {createStackNavigator, createAppContainer} from "react-navigation";

import Login from './src/components/login/Login';
import Registration from './src/components/login/Registration';

export default class FastAttendance extends Component {
        render() {
                return <AppContainer />
        }
}

const AppNavigator = createStackNavigator({
        Login: {screen: Login},
        Registration: {screen: Registration},
},
{
        initialRouteName: 'Login',
}
);

const AppContainer = createAppContainer(AppNavigator);

Когда я пытаюсь запустить это, мой экран входа в систему выглядит нормально, но когда я нажимаю кнопку регистрации, я получаю ошибку "undefined не является объектом (оценивая" это.props.navigation ')».Как и предлагалось в других темах, я удалил this.props в этот код

navigation.navigate('Registration');

Однако, когда я нажимаю кнопку регистрации, я получаю сообщение об ошибке «Не удается найти переменную: навигация»

Еще один вариант, который я попробовал, - это изменить функцию createStackNavigator в моем файле App.js следующим образом:

 const AppNavigator = createStackNavigator({
    screen: Login,
    screen: Registration
 });

Очевидно, что при отсутствии начального маршрута указывалось, что поведение не очень хорошее, и приложение при запуске сразу переходит к экрану регистрации.приложение, но нет ошибок.Что-то не так с моей функцией createStackNavigator или чем-то еще?

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Вы должны пройти навигацию как реквизит, как это:

<MyListComponent navigation={this.props.navigation} />
0 голосов
/ 14 мая 2019

Вместо

{this.startRegistration}

do

{() => this.startRegistration ()}

другое решение заключается всвязать функцию в конструкторе

this.startRegistration.bind (this)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...