React native 反应导航:直接移动到最后一页,然后返回到以前的屏幕

React native 反应导航:直接移动到最后一页,然后返回到以前的屏幕,react-native,react-navigation,react-navigation-stack,React Native,React Navigation,React Navigation Stack,在中,当按下BackButton时,我如何能够直接转到最后一页, 返回到前面的屏幕 让我解释清楚, 用户可以通过点击“添加”按钮添加新表单。在我的例子中,用户必须浏览3个页面才能创建一个新表单 添加示例: ListPage-->Page1-->Page2-->Page3(发送至api) 这个很好用 用户可以从列表页面编辑提交的表单。因此,如果用户点击列表项,它必须直接移动到Page3,然后当按下BackButton时,它必须进入Page2然后是Page1然后是ListPage 编辑示例: Lis

在中,当按下
BackButton
时,我如何能够直接转到最后一页, 返回到前面的屏幕

让我解释清楚,

用户可以通过点击“添加”按钮添加新表单。在我的例子中,用户必须浏览3个页面才能创建一个新表单

添加示例:

ListPage
-->
Page1
-->
Page2
-->
Page3
(发送至api)

这个很好用

用户可以从列表页面编辑提交的表单。因此,如果用户点击列表项,它必须直接移动到
Page3
,然后当按下
BackButton
时,它必须进入
Page2
然后是
Page1
然后是
ListPage

编辑示例:

ListPage
----directnavigation-->
Page3
----backpressed-->
Page2
----backpressed-->
Page1
----backpressed-->
ListPage


编辑
场景中如何处理此问题?

我不知道您使用的是React标头还是native base标头。但在这里,我展示了一个示例,其中我使用了带有React导航的本地基头

    <Container>
                    <Header androidStatusBarColor={Constants.primary} hasTabs style={[Styles.header]}>
                        <Left style={{ flex: 1 }}>
                            <TouchableOpacity onPress={() => props.navigation.goBack()} style={{ flexDirection: 'row', alignItems: 'center' }}>
                                <Icon name="ios-arrow-back" style={[Styles.headerLeftIcon]} />
                                <Text style={[Styles.headerLeftText]}>Go Back</Text>
                            </TouchableOpacity>
                        </Left>
<Container>

props.navigation.goBack()}style={{flexDirection:'row',alignItems:'center'}>
回去
这是用户使用props.navigation.goBack()返回返回箭头单击的基本代码

因此,对于您的场景,我建议您向第3页发送一个参数(例如:键入:“编辑”)。因此,当用户单击“上一步”按钮时,请检查类型,如果没有编辑,请执行基本的props.navigation.goBack(),如果编辑,请转到props.navigation.navigate(“第二页”)


因为基本上路由就像推送和弹出一样工作,所以如果我们直接进入第3页,第1页和第2页不是路由数组的一部分,所以我们应该向它显示一条从第3页返回第2页的路径。单击“上一步”按钮可以找到解决方案的最佳方法。请使用这个.props.navigation.dispatch(屏幕名称)


请参阅此链接
https://reactnavigation.org/docs/en/navigation-prop.html

我使用
StackActions
修复了它

这是密码

  StackActions.reset({
    index: 2,
    key: undefined,
    actions: [
        NavigationActions.navigate({ routeName: 'Page1' }),
        NavigationActions.navigate({ routeName: 'Page2' }),
        NavigationActions.navigate({ routeName: 'Page3' })
    ]
});

我能提个建议吗?为什么不创建自己的自定义标题,然后在箭头处单击导航到该页面,并禁用默认的导航标题I很抱歉,您不理解我的问题。const navigateToPage3=NavigationActions.navigate({routeName:'Page1',params:{smsData:data},操作:NavigationActions.navigate({routeName:'Page2',操作:NavigationActions.navigate({routeName:'Page3'})});本.道具.导航.调度(导航第3页);它导航到第1页并停止。我使用StackActions修复了它。在这种情况下,如果您使用props.navigation.navigate(“第二页”)从第3页移动到第2页,您会感到非常高兴。它将把它添加到堆栈中。我看这里就像安卓系统中的Backback。我的期望是动态启动第三屏。当按下back时,屏幕2和屏幕1。没有类似的情况,路由堆栈只在你推送路由的方式下工作,条件渲染只在那个时候可能。我用StackActions修复了它。如果可能的话,这是一个很好的回答,这样可以帮助其他人