Ich habe eine HomePage.js
mit nur einer Schaltfläche, Login Button, und wenn ich geklickt habe, möchte ich LoginPage.js
rendern. Ich habe versucht, so etwas wie diese, aber es funktioniert nicht:Routing mit React-Native
HomePage.js
:
import React, { Component } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import LoginPage from './LoginPage';
class HomePage extends Component{
constructor() {
super();
this.state = {LoginPage:false};
}
showLogin =() => {
this.setState({LoginPage:true});
}
render() {
return(
<View>
<TouchableOpacity onPress={() => this.showLogin()}>
<Text>LogIn</Text>
</TouchableOpacity>
</View>
)
}
}
export default HomePage;
In React es leicht mit react-router
getan, aber ich weiß nicht, wie es zu tun mit React-Ureinwohner.
EDIT 1
nach einschließlich react-navigation
Ich bekomme den folgenden Fehler: Route 'navigationOptions' should declare a screen
. Habe ich etwas verpasst?
App.js
:
import React, {Component} from 'react';
import {StackNavigator} from 'react-navigation';
import HomePage from './HomePage';
import LoginPage from './LoginPage';
const App = StackNavigator({
Home: {screen: HomePage},
LoginPage: {screen: LoginPage},
navigationOptions: {
header:() => null,
}
});
export default App;
HomePage.js
import React, { Component } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import LoginPage from './LoginPage';
class HomePage extends Component{
static navigationOptions = {
title: 'Welcome',
};
render() {
const { navigate } = this.props.navigation;
return(
<View>
<TouchableOpacity onPress={() => navigate('LoginPage'), { name: 'Login' }}>
<Text>Login</Text>
</TouchableOpacity>
<Button
onPress={() => navigate('LoginPage'), { name: 'Login' }}
>Log In</Button>
</View>
)
}
}
export default HomePage;
LoginPage.js
import React, { Component } from 'react';
import { Text, View } from 'react-native';
class LoginPage extends Component {
static navigationOptions = ({navigation}) => ({
title: navigation.state.params.name,
});
render() {
return (
<View>
<Text>This is login page</Text>
</View>
);
}
}
export default LoginPage;
Dank Vicky, wird es einen Header mit dem Bildschirm Titel hat? Ich würde das nicht mögen –
ja Sie können Header auf Null setzen (siehe aktualisierte Antwort) .. Bitte akzeptieren Sie die Antwort, wenn ich geholfen habe :) – Vicky
Ich bekomme diesen Fehler: Route 'navigationOptions' sollte einen Bildschirm zu deklarieren. Ich werde meine Frage zu bearbeiten, um den Code –