1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import {Navigation} from 'react-native-navigation'; import Welcome from './src/Welcome'; import SignIn from './src/SignIn'; import SignUp from './src/SignUp'; Navigation.registerComponent('Welcome', ()=>Welcome ); Navigation.registerComponent('SignIn', ()=>SignIn ); Navigation.registerComponent('SignUp', ()=>SignUp ); Navigation.events().registerAppLaunchedListener(()=>{ Navigation.setRoot({ root: { stack : { id:'AppStack', children : [ { component : { name: 'Welcome', options:{ topBar : { title: { text: 'Welcome' } } } }, } ] } } }) }); | cs |
[index.js]
index.js 파일을 root: 부분에 statck 항목을 추가한다.
Navigation.setRoot() 함수는 탭 또는 스택 또는 이 두 가지의 조합과 같은 모든 종류의 레이아웃에 대한 속성을 받는다.
stack 은 RNN (react-native-navigation) 에서 레이아웃의 한종류이다.
자식 레이아웃을 지원한다. stack은 둘 이상의 화면으로 초기화 될수 있고 마지막 화면이 스택 맨위에 표시된다.
const stack = {
children: [
{
component: {}
},
{
component: {}
}
],
options: {}
}
Welcome.js 파일을 아래와 같이 수정한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import React, {Component} from "react"; import { View, Text, StyleSheet, Button } from "react-native"; import {Navigation} from "react-native-navigation"; class WelcomScreen extends Component { goToScreen = (screenName) => { Navigation.push(this.props.componentId,{ component : { name: screenName } }) } render() { return ( <View style={styles.container}> <Button title='Sign In' onPress={()=> this.goToScreen('SignIn')} /> <Button title='Sign Up' onPress={()=> this.goToScreen('SignUp')} /> </View> ); } } export default WelcomScreen; const styles = StyleSheet.create({ container : { flex : 1, alignItems: 'center', justifyContent : 'center' } }); | cs |
[Welcome.js]
Navigation Stack에서 새로운 화면을 추가할때 사용하는 메서드이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import React, {Component} from "react"; import { View, Text, StyleSheet, Button } from "react-native"; import {Navigation} from "react-native-navigation"; class SignIn extends Component { render() { return ( <View style={styles.container}> <Text>SignIn</Text> </View> ); } } export default SignIn; const styles = StyleSheet.create({ container : { flex : 1, alignItems: 'center', justifyContent : 'center' } }); | cs |
[SignIn.js]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import React, {Component} from "react"; import { View, Text, StyleSheet, Button } from "react-native"; class SignUp extends Component { render() { return ( <View style={styles.container}> <Text>SignUp</Text> </View> ); } } export default SignUp; const styles = StyleSheet.create({ container : { flex : 1, alignItems: 'center', justifyContent : 'center' } }); | cs |
[SignUp.js]
'React & React Native ' 카테고리의 다른 글
리액트네이티브 react-native-navigation V2 SideMenu #4 (0) | 2018.12.27 |
---|---|
React Native Navigation Patterns (0) | 2018.12.26 |
리액트네이티브 react-native-navigation V2 LifeCycle #4 (0) | 2018.12.25 |
리액트네이티브 react-native-navigation v2 Root Screen #2 (2) | 2018.12.24 |
FLEXBOX 레이아웃 연습 FLEXBOX FROGGY [FLEXBOX FROGGY 답] (0) | 2018.12.23 |