HomePage.js
ボタンが1つのみで、ログインボタンがあり、クリックしたときにレンダリングしたいLoginPage.js
です。私はこのような何かをしようとしたが、それは働いていない: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;
では、それが簡単にreact-router
で行われていますが、私が反応-ネイティブでそれを行う方法がわからない反応します。
EDIT 1
react-navigation
を含めると、次のエラーが表示されます。Route 'navigationOptions' should declare a screen
。私は何か見落としてますか?
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;
を感謝ヴィッキーは、画面タイトルとヘッダーを持っているのだろうか?私はそれが好きではないでしょう –
はい、あなたはnullにヘッダーを設定することができます(更新された答えを参照してください..)もし私が手伝ったら答えを受け入れてください: – Vicky
私はこのエラーが発生します: 'navigationOptions'ルートが画面を宣言する必要があります。コードを含めるように質問を編集します –