【问题标题】:React Native - How to pass from screen to another screen?React Native - 如何从屏幕传递到另一个屏幕?
【发布时间】:2019-01-18 08:23:08
【问题描述】:

我有一个简单的应用程序,它只有两个屏幕:登录和主页。我想从登录屏幕转到主屏幕。如果可能的话,我不想使用导航器。这是我的代码:

Index.js

import { AppRegistry } from 'react-native';
import App from './src/App';

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

App.js

class App extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return(
            <LoginPage />
        );
    }
}

export default App;

LoginPage.js

export class LoginPage extends Component{

    constructor(props) {
        super(props);
        this.state = { email: '', password: '' };
    }

    goToHomePage = () => {
        // HERE!!!!!!
    };

    onButtonPress = () => {
        this.goToHomePage();
    };

    render(){
        return(
            <View>
                <TextInput
                    style={Styles.textInput}
                    onChangeText={(email) => this.setState({email})}
                    placeholder={'Email'}
                    value={this.state.email}
                />

                <TextInput
                    style={Styles.textInput}
                    onChangeText={(password) => this.setState({password})}
                    secureTextEntry
                    placeholder={'Password'}
                    value={this.state.password}
                />

                <Button onPress={() => this.props.navigation.navigate('HomePage')}
                    title="Login"
                    color="#841584"
                    accessibilityLabel="Learn more about this purple button"
                />
            </View>
        );
    };
}

HomePage.js

export class HomePage extends Component{

    constructor(props) {
        super(props);
    }

    goToLoginPage = () => {
        // HERE !!!!!!
    };

    onButtonPress = () => {
        this.goToLoginPage();
    };

    render () {
        return (
            <View style={Styles.container}>
                <View>
                    <LoginHeader Title={'Titulo do HomePage'} />
                </View>

                <Button
                    style={Styles.button}
                    title={'Logout'}
                    onPress={this.onButtonPress}
                />
            </View>
        )
    }
}

那么,如何使用此代码实现移动到屏幕的方法?我尝试使用react-native-navigationreact-navigation,但在这种情况下对我不起作用。

编辑

我试过用这个:

App.js

import { createStackNavigator } from 'react-navigation';

const RootStack = createStackNavigator(
    {
        HomePage: HomePage,
        LoginPage: LoginPage,
    },
    {
        initialRouteName: 'LoginPage',
    }
);

class App extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        return(
            <RootStack />
        );
    }
}

导出默认应用;

LoginPage.js

import { createStackNavigator } from 'react-navigation';

export class LoginPage extends Component{

    constructor(props) {
        super(props);
        this.state = { email: '', password: '' };
    }

    goToHomePage = () => {
        // HERE!!!!!!
    };

    onButtonPress = () => {
        this.goToHomePage();
    };

    render(){
        return(
            <View>
                <TextInput
                    style={Styles.textInput}
                    onChangeText={(email) => this.setState({email})}
                    placeholder={'Email'}
                    value={this.state.email}
                />

                <TextInput
                    style={Styles.textInput}
                    onChangeText={(password) => this.setState({password})}
                    secureTextEntry
                    placeholder={'Password'}
                    value={this.state.password}
                />

                <Button onPress={() => this.props.navigation.navigate('HomePage')}
                    title="Login"
                    color="#841584"
                    accessibilityLabel="Learn more about this purple button"
                />
            </View>
        );
    };
}

【问题讨论】:

  • “在这种情况下对我不起作用”是什么意思?这是完全正确的用法。
  • 只是不工作。显示多个错误。
  • 这些错误是什么?
  • 主要错误是屏幕必须是 React 组件。例如:说 LoginPage 必须是 React 组件。
  • 您能否也展示一下您实际尝试过的内容?没有代码显示设置或与您提到的任一导航库交互。如果可能,请分享 repo 以及您遇到的特定代码和错误。

标签: reactjs react-native react-native-android react-navigation react-native-navigation


【解决方案1】:

你是否从“react”导入 React,{Component}?

【讨论】:

  • 在 LoginPage.js 中更改导出类 LoginPage .. 以导出默认类 LoginPage 和 HomePage.js 相同。在 App.js 中将它们导入为: import LoginPage from "./LoginPage"
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多