Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React Native:如何从外部选项卡导航返回选项卡栏上的内部堆栈导航?_React Native_React Navigation_Tabnavigator_Stack Navigator_React Tabs - Fatal编程技术网

React native React Native:如何从外部选项卡导航返回选项卡栏上的内部堆栈导航?

React native React Native:如何从外部选项卡导航返回选项卡栏上的内部堆栈导航?,react-native,react-navigation,tabnavigator,stack-navigator,react-tabs,React Native,React Navigation,Tabnavigator,Stack Navigator,React Tabs,我正在使用TabNavigator和StackNavigator构建React本机应用程序 我在React本机应用程序的根级别使用TabNavigator TabNavigator中的每个路由都映射到StackNavigator 每个StackNavigator有n个屏幕 假设我在设置选项卡上,在用户设置->支付选项->信用卡1中有3个屏幕 每次点击“设置”选项卡时,我都想返回一个屏幕 点击1:信用卡1->支付选项 点击2:付款选项->用户设置 点击3:用户设置->设置 如何执行此操作?

我正在使用TabNavigator和StackNavigator构建React本机应用程序

  • 我在React本机应用程序的根级别使用TabNavigator
  • TabNavigator中的每个路由都映射到StackNavigator
  • 每个StackNavigator有n个屏幕
假设我在设置选项卡上,在用户设置->支付选项->信用卡1中有3个屏幕

每次点击“设置”选项卡时,我都想返回一个屏幕

  • 点击1:信用卡1->支付选项
  • 点击2:付款选项->用户设置
  • 点击3:用户设置->设置

如何执行此操作?

如果堆栈视图的路由索引不是0,则关键是在路由的
选项卡中分配正确的导航操作


index.js

import React, { AppRegistry } from 'react-native'
import { Component } from 'react'
import MyTabNavigator from './components/MyTabNavigator'

class MyApp extends Component {
    render() {
        return (
            <MyTabNavigator/>
        );
    }
}

AppRegistry.registerComponent('MyApp', () => MyApp);
import HomeStackNav from './HomeStackNav'
import SettingsStackNav from './SettingsStackNav'

const goBackNavigationAction = NavigationActions.navigate({
  action: NavigationActions.back()
})

const routeConfig = {
  Home: {
    screen: HomeStackNav,
    path: 'home',
    navigationOptions: {...}
  },
  Settings: {
    screen: SettingsStackNav,
    path: 'settings',
    navigationOptions: ({ navigation }) => ({
      title: 'settings',
      tabBarLabel: 'settings',
      tabBarOnPress: (scene, jumpToIndex) => {
        jumpToIndex(scene.index)
        if (scene.route.index > 0) {                  // <----- this is
          navigation.dispatch(goBackNavigationAction) // <----- where the
        }                                             // <----- magic happens
      }
    })
  }
}

const tabNavigatorConfig = {...}

export default TabNavigator(routeConfig, tabNavigatorConfig)
import React,{AppRegistry}来自“React native”
从“react”导入{Component}
从“./components/MyTabNavigator”导入MyTabNavigator
类MyApp扩展组件{
render(){
返回(
);
}
}
AppRegistry.registerComponent('MyApp',()=>MyApp);
MyTabNavigator.js

import React, { AppRegistry } from 'react-native'
import { Component } from 'react'
import MyTabNavigator from './components/MyTabNavigator'

class MyApp extends Component {
    render() {
        return (
            <MyTabNavigator/>
        );
    }
}

AppRegistry.registerComponent('MyApp', () => MyApp);
import HomeStackNav from './HomeStackNav'
import SettingsStackNav from './SettingsStackNav'

const goBackNavigationAction = NavigationActions.navigate({
  action: NavigationActions.back()
})

const routeConfig = {
  Home: {
    screen: HomeStackNav,
    path: 'home',
    navigationOptions: {...}
  },
  Settings: {
    screen: SettingsStackNav,
    path: 'settings',
    navigationOptions: ({ navigation }) => ({
      title: 'settings',
      tabBarLabel: 'settings',
      tabBarOnPress: (scene, jumpToIndex) => {
        jumpToIndex(scene.index)
        if (scene.route.index > 0) {                  // <----- this is
          navigation.dispatch(goBackNavigationAction) // <----- where the
        }                                             // <----- magic happens
      }
    })
  }
}

const tabNavigatorConfig = {...}

export default TabNavigator(routeConfig, tabNavigatorConfig)
从“./HomeStackNav”导入HomeStackNav
从“./SettingsStackNav”导入设置sStackNav
const goBackNavigationAction=NavigationActions.navigate({
操作:NavigationActions.back()
})
常数routeConfig={
主页:{
屏幕:HomeStack导航,
路径:“家”,
导航选项:{…}
},
设置:{
屏幕:设置StackNav,
路径:“设置”,
导航选项:({navigation})=>({
标题:“设置”,
tabBarLabel:“设置”,
tabBarOnPress:(场景,跳转索引)=>{
jumpToIndex(场景索引)
如果(scene.route.index>0){//