代码之家  ›  专栏  ›  技术社区  ›  BRDroid

stacknavigator中的tabnavigator-react native

  •  1
  • BRDroid  · 技术社区  · 7 年前

    我试图将tabnavogator放在stacknavigator中,它抱怨它必须是一个react组件。

    我已经附上了代码和错误屏幕截图。

    当我通过登录屏幕时,我想要tabs,所以在login.js中单击一个按钮,我将移动到tabs,但我认为问题出在router.js中,我可能做错了。

    如果你能提出如何改正的建议,那将是非常有帮助的

    谢谢 R

    劳斯

     import React from 'react';
    import { TabNavigator, StackNavigator } from 'react-navigation';
    import Login from '../../scripts/components/pages/Login';
    import WalkThrough from '../../scripts/components/pages/WalkThrough';
    import Transactions from '../../scripts/components/pages/Transactions';
    import UserProfile from '../../scripts/components/pages/UserProfile';
    
    
    export const Root = StackNavigator({          
        WalkThrough: {
          screen: WalkThrough,
          navigationOptions:{
            title: 'WalkThrough',
          },
        },    
        Login:{
          screen: Login,
          navigationOptions: {
            title: 'Login',
          },
        },
        Tabs: {
          screen: Tabs,
        }, 
      }, {
        mode: 'modal',
        headerMode: 'screen',
      });
    
      export const Tabs = TabNavigator({
        Transactions: {
          screen: Transactions,
          navigationOptions: {
            tabBarLabel: 'Transactions',
            tabBarIcon: ({ tintColor }) => <Icon name="list" size={35} color={tintColor} />,
          },
        },
        Profile: {
          screen: UserProfile,
          navigationOptions: {
            tabBarLabel: 'Profile',
            tabBarIcon: ({ tintColor }) => <Icon name="account-circle" size={35} color={tintColor} />
          },
        },
      });
    

    索引文件

    import React, {Component} from 'react';
    import {Root} from './config/router';
    
    class App extends Component{
        render(){
            return <Root/>;
        }
    }
    
    export default App;
    

    主索引.js(仅供参考)

    import { AppRegistry } from 'react-native';
    import app from './app/index';
    AppRegistry.registerComponent('DoPayRetail', () => app);
    

    从登录屏幕我想转移到标签页。

    罗杰斯

    import React, {Component} from 'react';
    import { StyleSheet, Text, View, Button } from 'react-native';
    
    class Login extends Component{
    
        goToNext = () => {
          this.props.navigation.navigate('Tabs');
        };
    
        render(){
          const {navigate } = this.props.navigation;
          return (
            <View style = {styles.container}> 
              <Text> Login screen
              </Text>
              <Button
                onPress={this.goToNext}
                title="Go to next page"
                color="#841584"
              />
            </View>
          );
        }
      }
    
      const styles = StyleSheet.create({
        container: {
          flex: 1,
          alignItems: 'center',
          justifyContent: 'center',
        },
      });
    
      export default Login;
    

    这是我的错误信息

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   MdBalal    7 年前

    在router.js中,放置 Tabs 上面的变量 Root 的初始化。在声明变量之前,您当前正在使用它。我认为这应该能解决问题。

        2
  •  0
  •   ehacinom    7 年前

    如果将stacknavigator创建在与react组件(您的选项卡tabsnavigator)相同的页面中,则会显示此错误。尝试将选项卡移到它自己的文件中。