我的问题实际上是关于想要在react-native-router-flux 中说明的错误的确切行为:如何防止选项卡场景历史堆栈在选项卡之间更改时被重置?
我正在从链接的问题中复制确切的场景描述和代码片段,因为这正是我所需要的
我有一个
Router
带有 2 个选项卡场景的设置:
- 选项卡 1:有 2 个可导航场景(静态屏幕);
- 屏幕 A:有一个按钮可以导航到屏幕 B;
- 屏幕B:只有一个文本;
- 选项卡 2:只有 1 个静态屏幕。
- 屏幕C:只有一个文本;
代码如下。
应用程序.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> ); } }
画面也很简单。
一个.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,因为它是设计使然。
我知道我可以实现一个自定义减速器来解决这个问题,但我相信必须有一个更直接的解决方案我可能会忽略。