【问题标题】:React-native creating switch navigatorReact-native 创建切换导航器
【发布时间】:2020-01-01 05:36:40
【问题描述】:

我是 react-native 的初学者。我正在尝试创建导航器侧边栏,但在创建切换导航器时出现错误。我已按照教程进行操作,但遇到了错误

需要循环:modules\Dashboard.js -> modules\Navigator.js -> modules\Dashboard.js

我的 Navigator.js 中有这个:

import React, { Component } from 'react'
import { Platform, Dimensions } from 'react-native'
import { createSwitchNavigator, createAppContainer } from 'react-navigation';

//navigators
import Dashboard from '../modules/Dashboard.js'

const WIDTH = Dimensions.get('window').width;

const DrawerConfig = {
    drawerWidth: WIDTH*0.83,
}

const SwitchNavigator = createSwitchNavigator(
    {
        dashboard: {
            screen: Dashboard
        },
    },
    DrawerConfig
);

const AppContainer = createAppContainer(SwitchNavigator);

class Navigator extends Component {

    render() {
        return (
            <AppContainer />
          );
    }
}

这是我来自 Dashboard.js 的完整代码:

import React, { Component } from 'react'
import { StyleSheet, Text, View } from 'react-native'

import MenuButton from '../modules/MenuButton.js'
import Navigator from '../modules/Navigator.js'


class Dashboard extends Component {

    render() {
        return (
            <View style={styles.container}>
            <Navigator />
            <MenuButton navigation={this.props.navigation} />
                <Text style={styles.smallBlue}>Dashboard</Text>
            </View>
          );
    }
}

const styles = StyleSheet.create({

//Views
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center'
  },

//Text
  smallBlue: {
          marginTop: 30,
          color: 'powderblue',
          fontWeight: 'bold',
          fontSize: 30,
  }
});

export default Dashboard

这是因为我已经从我的导航器导入了仪表板,而我的仪表板导入了我的导航器?

【问题讨论】:

    标签: javascript reactjs react-native


    【解决方案1】:

    是的,这是link 中描述的导入问题

    您不应在仪表板屏幕中使用 Navigator。它应该在您的应用注册组件中

    index.js

    import Navigator from "./Navigator";
    
    AppRegistry.registerComponent(appName, () => Navigator);
    

    Navigator.js

    import React, { Component } from 'react'
    import { Platform, Dimensions } from 'react-native'
    import { createSwitchNavigator, createAppContainer } from 'react-navigation';
    
    //navigators
    import Dashboard from '../modules/Dashboard.js'
    
    const WIDTH = Dimensions.get('window').width;
    
    const DrawerConfig = {
        drawerWidth: WIDTH*0.83,
    }
    
    const SwitchNavigator = createSwitchNavigator(
        {
            dashboard: {
                screen: Dashboard
            },
        },
        DrawerConfig
    );
    
    const AppContainer = createAppContainer(SwitchNavigator);
    
    export default class Navigator extends Component {
    
        render() {
            return (
                <AppContainer />
              );
        }
    }
    

    世博会更新

    更新 App.js 文件并添加 Navigator.js 代码

    import React, { Component } from 'react'
    import { Platform, Dimensions } from 'react-native'
    import { createSwitchNavigator, createAppContainer } from 'react-navigation';
    
    //navigators
    import Dashboard from '../modules/Dashboard.js'
    
    const WIDTH = Dimensions.get('window').width;
    
    const DrawerConfig = {
        drawerWidth: WIDTH*0.83,
    }
    
    const SwitchNavigator = createSwitchNavigator(
        {
            dashboard: {
                screen: Dashboard
            },
        },
        DrawerConfig
    );
    
    const AppContainer = createAppContainer(SwitchNavigator);
    
    export default class Navigator extends Component {
    
        render() {
            return (
                <AppContainer />
              );
        }
    }
    
    

    【讨论】:

    • 您好先生,我需要制作注册组件文件吗?
    • 您的意思是我需要将 index.js 作为注册组件并将其导入我的仪表板吗?
    • 没有,当你创建一个新项目时,你有 index.js 文件,只需更改这一行 AppRegistry.registerComponent(appName, () => Navigator);在您的 index.js 文件中,将 Navigator 作为您的应用注册表组件
    • 您好先生,请问index.js在expo的位置在哪里?
    • 如果你使用 expo 在这里更改 node_modules/expo/AppEntry.js registerRootComponent(App);看到这个link
    猜你喜欢
    • 2020-12-09
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2016-06-29
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多