gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:16:59 27 4
gpt4 key购买 nike

我正在尝试拥有一个选项卡导航器,其中设置屏幕/选项卡是一个组件,其中包含一个堆栈导航器。

这是我目前拥有的代码(也可以在 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 />
);
}
}

我目前收到“类型错误:在导航状态中找不到“路线””错误。您是否尝试传递 React 组件的导航 Prop '

最佳答案

您需要将组件本身嵌套在 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);

希望对您有所帮助!

关于javascript - React Navigation - 如何嵌套组件将堆栈导航器包装在选项卡导航器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com