【问题标题】:Why does my react navigation button not work?为什么我的反应导航按钮不起作用?
【发布时间】:2019-04-11 17:07:19
【问题描述】:

所以,我正在为我的编程课做一个巨大的移动应用项目。我们有一个“客户端”,我们仍在等待在其端设置服务器,所以我们有一个登录按钮,但它还没有连接到数据库或任何东西。目前,我只是想让登录按钮导航到主屏幕,以便我们可以单击所有内容以确保一切正常。

我在网上找到的示例和论坛都假设我的按钮和导航将位于主 App.js 文件中。或者登录按钮所做的只是弹出一个警告对话框。当按下按钮时,我可以弹出一个警告对话框,所以我知道该按钮除了导航之外还可以工作。我的按钮实际上位于另一个名为 LoginScreen.js 的文件中,该文件是从 App.js 添加到导航堆栈的。我只是想知道我是否缺少图书馆,或者我是否没有正确调用某些东西。我发现的很多其他论坛都已经过时了。

我需要我的按钮从 LoginScreen.js 文件中工作,并且我需要它能够导航到另一个页面 (MainScreen.js)。有谁知道为什么这不起作用?

我的 App.js 文件:

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { createStackNavigator, createAppContainer } from 'react-navigation'
import LoginScreen from './components/LoginScreen'
import MainScreen from './components/MainScreen'


const AppStackNavigator = createStackNavigator({
  Login:{ screen: LoginScreen },
  Main:{ screen: MainScreen }
})

const App = createAppContainer(AppStackNavigator);

export default App;

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

我的 LoginScreen.js 文件:

import React, {Component} from 'react';
import {Text, View, TextInput, StyleSheet, Button} from 'react-native';
import MainScreen from './MainScreen'

export default class Login extends Component {
    render() {
        return (
            <View style = {styles.container}>
                <Text style = {styles.header}>
                    Welcome to Symbol Single
                </Text>
                <TextInput style = {styles.input}
                    underlineColorAndroid = "transparent"
                    placeholder = "email@address.com"
                    placeholderTextColor = "#e997a1"
                    autoCapitalize = "none"
                    onChangeText = {this.handleEmail}/>
                <TextInput style = {styles.input}
                    underlineColorAndroid = "transparent"
                    placeholder = "********"
                    placeholderTextColor = "#e997a1"
                    autoCapitalize = "none"
                    onChangeText = {this.handlePassword}/>
                <Button title="Login"
            style={styles.submitButton}
            onPress={() => this.props.navigation('MainScreen')}/> 
                <View style = {{flex: 3, backgroundColor: '#172532'}}></View>
            </View>
        )
    }
}

这是我第一次在论坛上发帖寻求帮助,如果有什么需要澄清的,请告诉我。

【问题讨论】:

    标签: react-native react-navigation react-native-navigation


    【解决方案1】:

    应该是this.props.navigation.navigate("Main")

    至少这是我迄今为止在我创建的应用程序中所做的。

    看这里:https://reactnavigation.org/docs/en/navigation-prop.html

    希望这会有所帮助!

    【讨论】:

    • 嗨,阿杰,感谢您的建议。不幸的是,那行代码并没有什么不同。因此,我尝试转到您给我的链接,它看起来与我在代码中已有的链接并没有太大不同。我确实又走了几页,也尝试了 Dispatch 方法,但这也没有什么不同。
    • @AjayGupta 是正确的,但是您需要导航到“主要”。 createStackNavigator 中为堆栈提供的每个键都是要导航到的路线的名称,因此在这种情况下,您有路线 'Login' 和 'Main'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多