私はRouter
2つのタブシーンでセットアップしています:
- タブ 1: 2 つのナビゲート可能なシーン (静的画面) があります。
- 画面 A:画面 Bに移動するためのボタンがあります。
- 画面 B:テキストを用意するだけです。
- タブ 2:静的な画面を 1 つだけ用意します。
- 画面 C:テキストを用意するだけです。
コードは次のとおりです。
app.js:
import React from 'react';
import { Router, Scene } from 'react-native-router-flux';
import Tab from '../tab';
import ScreenA from './a';
import ScreenB from './b';
import ScreenC from './c';
export default class App extends React.Component {
render(){
return (
<Router>
<Scene key="root">
<Scene key="tabbar" tabs={true}>
<Scene key="tab1" title="Tab 1" icon={Tab}>
<Scene key="a" title="Screen A" component={ScreenA} />
<Scene key="b" title="Screen B" component={ScreenB} />
</Scene>
<Scene key="tab2" title="Tab 2" icon={Tab}>
<Scene key="c" title="Screen C" component={ScreenC} />
</Scene>
</Scene>
</Scene>
</Router>
);
}
}
画面も至ってシンプル。
a.js:
export default class ScreenA extends React.Component {
render(){
return (
<View>
<Text>This is Screen A</Text>
<TouchableHighlight onPress={() => Actions.b()}>
<Text>Go to Screen B</Text>
</TouchableHighlight>
</View>
);
}
}
b.js:
export default class ScreenB extends React.Component {
render(){
return (
<View>
<Text>This is Screen B</Text>
</View>
);
}
}
c.js:
export default class ScreenC extends React.Component {
render(){
return (
<View>
<Text>This is Screen C</Text>
</View>
);
}
}
使用事例:
- アプリは画面 A (タブ 1) をレンダリングします。
- 画面 A のボタンをクリックします。アプリは画面 B (まだタブ 1 にあります) に移動します。
- タブ 2 をクリックします。アプリは画面 C (タブ 2) に移動します。
- タブ 1 をクリックします。予想どおり、アプリは画面 A (タブ 1 内) に移動し、画面 B には移動しません。
react-native-router-flux
タブに戻ったときにタブの履歴スタックを保持していません。それとも、ここで何か間違ったことをしていますか?
パッケージのバージョン:
- 反応 v15.3.2
- 反応ネイティブ v0.34.1
- 反応ネイティブルーターフラックス v3.36.0