====== stacknavigator ====== ===== 基本 ===== スタックナビゲーターは文字通り、画面を積み重ねていくイメージの画面遷移をする。 戻るで一つ前の画面に戻ることができる。 npm install --save react-navigation App.js import React from 'react'; import { StyleSheet} from 'react-native'; import { createAppContainer, createStackNavigator } from 'react-navigation' import HomeScreen from './HomeScreen' import DetailsScreen from './DetailsScreen' import EditScreen from './EditScreen' export default class App extends React.Component { render() { return ; } } const styles = StyleSheet.create({ view:{ flex: 1, alignItems: 'center', justifyContent: 'center', margin:10 }, button: { margin: 20, padding: 10, backgroundColor: 'wheat' } }); const RootStack = createStackNavigator( //使用する画面を設定。 { Home: { screen: HomeScreen, }, Details: { screen: DetailsScreen, }, Edit: { screen: EditScreen, }, }, { initialRouteName: 'Home', //デフォルトの画面 } ); const AppContainer = createAppContainer(RootStack); HomeScreen.js import React from 'react'; import { View, Text, TouchableOpacity , StyleSheet, FlatList , AsyncStorage} from 'react-native'; import { createAppContainer, createStackNavigator } from 'react-navigation'; // Version can be specified in package.json import { Button } from 'react-native-elements'; import Icon from 'react-native-vector-icons/Ionicons'; export default class HomeScreen extends React.Component { constructor(props) { } /** * render * */ render() { return ( Home Screen ); } } const styles = StyleSheet.create({ view:{ flex: 1, alignItems: 'center', justifyContent: 'center', margin:10, }, button: { margin: 10, padding: 1, backgroundColor: 'rgba(0,103,171,1)', borderRadius: 5, width:300 }, text:{ color: 'white' }, actionButtonIcon: { fontSize: 20, height: 22, color: 'white', } }); DetailsScreen.js import React from 'react'; import { Button, View, Text, TouchableOpacity , StyleSheet, FlatList , AsyncStorage} from 'react-native'; const styles = StyleSheet.create({ view:{ flex: 1, alignItems: 'center', justifyContent: 'center', margin:10 }, button: { margin: 20, padding: 10, backgroundColor: 'wheat' } }); export default class DetailsScreen extends React.Component { render() { console.log(this.props.navigation.state.params) return ( Details Screen {this.props.navigation.state.params} this.props.navigation.state.paramsで取得できる Details Screen {this.props.navigation.state.params} ===== StackNavigator間コンポーネント間のデータ渡し2 ===== this.props.navigation.push('Details',{star:1,rank:2} のようにすることで、 {this.props.navigation.state.params.star} {this.props.navigation.state.params.rank} のように取り出すことができる。