简体   繁体   English

React Native 中出现此错误的原因是什么?

[英]What is the reason for this error in React Native?

I am new to react native and I have been trying to create a header and pull out menu using createDrawerNavigator.我是原生反应新手,我一直在尝试创建 header 并使用 createDrawerNavigator 拉出菜单。

When running my code I get the following error.运行我的代码时,出现以下错误。

Error: The component for route 'Home' must be a React component.错误:路由“Home”的组件必须是 React 组件。 For example:例如:

import MyScreen from './MyScreen';从'./MyScreen'导入MyScreen;

Home: MyScreen, }主页:我的屏幕,}

You can also use a navigator:您还可以使用导航器:

import MyNavigator from './MyNavigator';从'./MyNavigator'导入MyNavigator;

Home: MyNavigator,主页:我的导航器,

} }

Here is my app.js file:这是我的 app.js 文件:

 import React from 'react'; import { Button, View, Text } from 'react-native'; import { createAppContainer } from 'react-navigation'; import MyDrawerNavigator from './components/MyDrawerNavigator'; const MyApp = createAppContainer(MyDrawerNavigator); export default class App extends React.Component { render() { return <MyApp />; } }

My HomeScreen.js file我的 HomeScreen.js 文件

 import React from 'react'; import { Text, Button } from 'react-native'; import LogoTitle from './LogoTitle'; class MyHomeScreen extends React.Component { static navigationOptions = ({ navigation }) => { return { headerTitle: <LogoTitle />, headerLeft: ( <Button onPress={() => this.props.navigation.navigate('DrawerToggle')} title={'Menu'} /> ), }; }; render() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>Home Screen</Text> </View> ); } } export default MyHomeScreen;

My MyDrawerNavigator.js file我的 MyDrawerNavigator.js 文件

 import React from 'react'; import { Button, Platform, Image, View, Text } from 'react-native'; import { createDrawerNavigator } from 'react-navigation-drawer'; import MyHomeScreen from './HomeScreen'; import DetailsScreen from './DetailScreen'; const MyDrawerNavigator = createDrawerNavigator( { Home: MyHomeScreen, Details: DetailsScreen, }, { drawerPosition: 'right', contentOptions: { activeTintColor: '#000', }, }); export default MyDrawerNavigator

The are 2 problems here:这里有两个问题:

1) You are not exporting your MyDrawerNavigator just add: 1)您没有导出您的MyDrawerNavigator只需添加:

export default MyDrawerNavigator

to your MyDrawerNavigator.js file到您的MyDrawerNavigator.js文件

2) You are not exporting your HomeScreen . 2)您没有导出HomeScreen You'll have to create a separate file for it, like you did with DetailsScreen .您必须为它创建一个单独的文件,就像使用DetailsScreen一样。

The HomeScreen.js file would look like: HomeScreen.js文件如下所示:

class MyHomeScreen extends React.Component {
    static navigationOptions = ({ navigation }) => {
      return {
        headerTitle: <LogoTitle />,
        headerLeft: (
          <Button
          onPress={() => this.props.navigation.navigate('DrawerToggle')}
          title={'Menu'}
          />
        ),
      };
    };

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

You NEED to add a render inside of your screens您需要在屏幕内添加渲染

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM