简体   繁体   English

React Navigation-如何将包装堆栈导航器的组件嵌套在选项卡导航器中

[英]React Navigation - How to nest a component wrapping a stack navigator inside a tab navigator

I am trying to have a tab navigator, where the settings screen/tab is a component, that, among other stuff, contains a stack navigator. 我试图有一个选项卡导航器,其中设置屏幕/选项卡是一个组件,其中包括堆栈导航器。

Here is the code I currently have (can also be found as a snack ). 这是我当前拥有的代码(也可以作为点心 )。

import * as React from 'react';
import { Button, Text, View, StyleSheet } from 'react-native';
import { createAppContainer, createStackNavigator, createBottomTabNavigator } from 'react-navigation';

class ScreenA extends React.Component {
  static navigationOptions = {
    tabBarLabel: 'A',
  };

  render() {
    return (
      <View>
        <Text>Screen A</Text>
      </View>
    );
  }
}

class SettingsHome extends React.Component {
  render() {
    return (
      <Button onPress={() => this.props.navigation.navigate('SettingsScreenA')}>
        <Text>Navigate to Settings A</Text>
      </Button>
    );
  }
}

class SettingsScreenA extends React.Component {
  render() {
    return (
      <View>
        <Text>Settings A</Text>
        <Button onPress={() => this.props.navigation.navigate('SettingsA')}>
          <Text>Back to SettingsHome</Text>
        </Button>
      </View>
    );
  }
}

const SettingsStackNavigator = createStackNavigator({
  SettingsHome: { screen: SettingsHome },
  SettingsScreenA: { screen: SettingsScreenA }
})

class SettingsScreen extends React.Component {
  static navigationOptions = {
    tabBarLabel: 'Settings',
  }

  render() {
    return (
      <View>
        <Text>Some other components...</Text>
        <SettingsStackNavigator navigation={this.props.navigation}/>
      </View>
    );
  }
}

const RootTabNavigator = createBottomTabNavigator({
  ScreenA: { screen: ScreenA },
  Settings: {screen: SettingsScreen },
});

const Navigation = createAppContainer(RootTabNavigator);

export default class App extends React.Component {
  render() {
    return (
      <Navigation />
    );
  }
}

I currently get a 'Type Error: No "routes" found in navigation state' error. 我目前收到“类型错误:在导航状态下未找到“路线””错误。 Did you try to pass the navigation prop of a React component ' 您是否尝试过传递React组件的导航道具'

you'll need to nest the component itself in a stackNavigator , containing the all the stackScreen , like so; 你需要嵌套组件本身的stackNavigator ,包含所有stackScreen ,像这样;

import * as React from 'react';
import { Button, Text, View, StyleSheet } from 'react-native';
import { createAppContainer, createStackNavigator, createBottomTabNavigator } from 'react-navigation';

class ScreenA extends React.Component {
  static navigationOptions = {
    tabBarLabel: 'A',
  };

  render() {
    return (
      <View style={{alignItems:'center', justifyContent:'center', flex:1}}>
        <Text>Screen A</Text>
      </View>
    );
  }
}

class SettingsHome extends React.Component {
  render() {
    return (
      <Button onPress={() => this.props.navigation.navigate('SettingsScreenA')}
        title ="Navigate to Settings A"
      />
    );
  }
}

class SettingsScreenA extends React.Component {
  render() {
    return (
      <View style={{alignItems:'center', justifyContent:'center', flex:1}}>
        <Text>Settings A</Text>
        <Button onPress={() => this.props.navigation.navigate('SettingsHome')}
          title ="Back to SettingsHome"
        />
      </View>
    );
  }
}

class SettingsScreen extends React.Component {
  render() {
    return (
      <View style={{alignItems:'center', justifyContent:'center', flex:1}}>
        <Text>Some other components...</Text>
          <Button title="Seting A" onPress={() => this.props.navigation.navigate('SettingsScreenA')} />

      </View>
    );
  }
}

// Create our stack navigator
const SettingsStackNavigator = createStackNavigator({
  SettingsMain: {screen: SettingsScreen,},
  SettingsHome: { screen: SettingsHome },
  SettingsScreenA: { screen: SettingsScreenA }
}, {initialRouteName: 'SettingsMain'})



const RootTabNavigator = createBottomTabNavigator({
  ScreenA: { screen: ScreenA },
  Settings: {screen: SettingsStackNavigator },
});

// And the app container
export default createAppContainer(RootTabNavigator);

hope it helps! 希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用导航 v5+ 在抽屉导航器中嵌套堆栈导航器 - How to nest Stack Navigator inside a Drawer Navigator with navigation v5+ 如何在堆栈导航器中嵌套底部标签栏? - How can I nest a Bottom Tab Bar inside a stack Navigator? 反应导航 | 如何从嵌套在 Stack Navigator 中的子屏幕更改 Tab Navigator 上的按钮? - React Navigation | How do I change the buttons on a Tab Navigator from a child screen nested in a Stack Navigator? 在静态布局中反应导航选项卡导航器 - react navigation tab navigator inside static layout 如何将道具传递给 React Navigation 导航器内的组件? - How to pass props to component inside a React Navigation navigator? 如何将多个导航器相互嵌套? 即在抽屉导航器中嵌套底部选项卡并将抽屉导航器嵌套到堆栈导航器 - How to nest multiple navigator within each other? i.e. nesting bottom tab in drawer navigator and nesting drawer navigator to stack navigator 带有选项卡导航器的堆栈导航器(React Native) - Stack Navigator with Tab Navigator (React Native) 堆栈导航器和选项卡导航器无法响应本机问题 - Trouble with stack navigator and tab navigator for react native 嵌套在堆栈导航器中的 React Native 选项卡导航器 - React Native tab navigator nested in stack navigator 如何从功能组件导航到选项卡导航器中的屏幕,其中该选项卡导航器嵌套在父堆栈导航器中 - How to Navigate from a functional component, from a screen in a tab navigator, where that tab navigator is nested in a parent stack navigator
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM