react-native-router-flux:如何防止在标签之间切换时重置Tab场景历史堆栈?

时间:2016-10-27 03:22:59

标签: react-native react-native-router-flux

我有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未保留标签&#39;我们回到他们的历史堆栈。或者我在这里做错了什么?

套餐版本:

  • react v15.3.2
  • react-native v0.34.1
  • react-native-router-flux v3.36.0

1 个答案:

答案 0 :(得分:3)

原来这是 react-native-router-flux 包中的一个错误,并且已在此pull request中修复。