この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
reactnative:stacknavigator [2019/01/26 02:24] ips 作成 |
reactnative:stacknavigator [2019/01/26 07:17] (現在) ips |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== stacknavigator ====== | ====== stacknavigator ====== | ||
- | ====== 基本 ====== | + | ===== 基本 ===== |
+ | |||
+ | スタックナビゲーターは文字通り、画面を積み重ねていくイメージの画面遷移をする。 | ||
+ | 戻るで一つ前の画面に戻ることができる。 | ||
+ | |||
+ | <code> | ||
+ | npm install --save react-navigation | ||
+ | </code> | ||
App.js | App.js | ||
ライン 34: | ライン 41: | ||
- | const RootStack = createStackNavigator( | + | const RootStack = createStackNavigator( //使用する画面を設定。 |
{ | { | ||
Home: { | Home: { | ||
ライン 47: | ライン 54: | ||
}, | }, | ||
{ | { | ||
- | initialRouteName: 'Home', | + | initialRouteName: 'Home', //デフォルトの画面 |
} | } | ||
); | ); | ||
ライン 80: | ライン 87: | ||
<Text>Home Screen</Text> | <Text>Home Screen</Text> | ||
- | <Button buttonStyle={styles.button} title="★☆☆" onPress={(e) => this.props.navigation.push('Details',1)}> | + | <Button buttonStyle={styles.button} title="★☆☆" onPress={(e) => this.props.navigation.push('Details',1)}> //画面遷移+prop渡し |
</Button> | </Button> | ||
- | <Button buttonStyle={styles.button} title="★★☆" onPress={(e) => this.props.navigation.push('Details',2)}> | + | <Button buttonStyle={styles.button} title="★★☆" onPress={(e) => this.props.navigation.push('Details',2)}> //画面遷移+prop渡し |
</Button> | </Button> | ||
- | <Button buttonStyle={styles.button} title="★★★" onPress={(e) => this.props.navigation.push('Details',3)}> | + | <Button buttonStyle={styles.button} title="★★★" onPress={(e) => this.props.navigation.push('Details',3)}> //画面遷移+prop渡し |
</Button> | </Button> | ||
ライン 155: | ライン 162: | ||
<Button | <Button | ||
title="Go to Details... again2" | title="Go to Details... again2" | ||
- | onPress={() => this.props.navigation.push('Details')} | + | onPress={() => this.props.navigation.push('Details')} //更に同じ画面を積み重ねる |
/> | /> | ||
<Button | <Button | ||
title="Go to Home" | title="Go to Home" | ||
- | onPress={() => this.props.navigation.navigate('Home')} | + | onPress={() => this.props.navigation.navigate('Home')} //どれだけ積み重ねていてもhomeに戻る |
/> | /> | ||
<Button | <Button | ||
title="Go back" | title="Go back" | ||
- | onPress={() => this.props.navigation.goBack()} | + | onPress={() => this.props.navigation.goBack()} //一つ前の画面に戻る |
/> | /> | ||
</View> | </View> | ||
ライン 171: | ライン 178: | ||
</code> | </code> | ||
- | ===== StackNavigator間コンポーネント間のデータ渡し ===== | + | ===== StackNavigator間コンポーネント間のデータ渡し1 ===== |
pushするときの第二引数にセットできる | pushするときの第二引数にセットできる | ||
ライン 184: | ライン 191: | ||
</code> | </code> | ||
+ | ===== StackNavigator間コンポーネント間のデータ渡し2 ===== | ||
+ | <code> | ||
+ | this.props.navigation.push('Details',{star:1,rank:2} | ||
+ | </code> | ||
+ | のようにすることで、 | ||
+ | <code> | ||
+ | {this.props.navigation.state.params.star} {this.props.navigation.state.params.rank} | ||
+ | </code> | ||
+ | のように取り出すことができる。 |