【发布时间】:2019-08-06 15:08:50
【问题描述】:
我遇到了这种奇怪的情况,当我从一个屏幕导航到另一个屏幕时,它会导航回之前打开的屏幕。
导航预期:
Layer 1 (screen A) > Layer 2 (screen B) > Layer 3 (screen C) > Layer 4 (screen D) > Layer 5 (screen B) > Layer 6 (screen C) > Layer 7 (screen D)
当从每个屏幕点击go back按钮时,它会向后弹出
Layer 7 > Layer 6 > Layer 5 > Layer 4 > Layer 3 > Layer 2 > Layer 1
Instagram 应用是导航循环的好例子。
我的应用面临的问题:
Layer 1 (screen A) > Layer 2 (screen B) > Layer 3 (screen C) > Layer 4 (screen D) > Layer 2 (screen B) > Layer 3 (screen C)
如果您从 Layer 4(屏幕 D) 看到导航到 screen B,它应该将其打开为 Layer 5,但发生了什么是,它被打开为 Layer 2,它向后跳了 2 层。
我正在使用this.props.navigation.navigate('ScreenName') 导航到另一个屏幕。
编辑:示例代码
我在我的应用程序中设置了这样的路线:
import React from 'react';
import { createStackNavigator, createAppContainer } from 'react-navigation';
import ScreenA from 'app/views/ScreenA';
import ScreenB from 'app/views/ScreenB';
import ScreenC from 'app/views/ScreenC';
import ScreenD from 'app/views/ScreenD';
const Navigation = createStackNavigator({
'PublicRoutes': {screen: ScreenA},
'ScreenB':{screen: ScreenB},
'ScreenC':{screen: ScreenC},
'ScreenD':{screen: ScreenD},
});
export default createAppContainer(Navigation)
这是屏幕的示例代码:
type Props = {};
export default class ScreenD extends Component<Props> {
constructor(props){
super(props);
this.state = {};
}
render() {
return (
<View>
<TouchableOpacity onPress={()=>this.props.navigation.navigate('ScreenB')}>
<Text>PRESS</Text>
</TouchableOpacity>
</View>
)
}
}
【问题讨论】:
-
请给我看你的堆栈设置代码。
-
@hongdevelop 我在我的问题中添加了一些代码。谢谢。
-
我想看看第 4 层和第 5 层。你有问题的地方
-
我的屏幕都被导入
route文件并在createStackNavigator中注册,就像在第一个代码堆栈中一样,我所有屏幕的代码结构就像在第二个代码堆栈中一样。每个屏幕都没有区别。 -
我在看代码的时候发现了一个问题。为什么第 5 层和第 2 层的 routeName 一样?
标签: react-native react-navigation