React Native导航包Error React.createElement:type无效 - 需要一个字符串

时间:2017-08-25 11:18:47

标签: javascript android reactjs react-native react-navigation

在打开应用时显示错误。

Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in.

这是我创建的基本代码。请参阅重现步骤:

  1. 使用命令create-react-native-app AwesomeProject
  2. 创建本机项目
  3. 已安装npm install --save react-navigation
  4. 将以下代码从反馈导航文档

    粘贴到App.js
    import React from 'react';
    import {
    AppRegistry,
    Text,
    } from 'react-native';
    import { StackNavigator } from 'react-navigation';
    
    class HomeScreen extends React.Component {
        static navigationOptions = {
            title: 'Welcome',
        };
        render() {
            return <Text>Hello, Navigation!</Text>;
        }
    }
    
    const SimpleApp = StackNavigator({
        Home: { screen: HomeScreen },
    });
    
    AppRegistry.registerComponent('SimpleApp', () => SimpleApp);
    
  5. 使用npm start运行应用,并在expo app android中打开

  6. 请注意,没有其他文件被编辑过。

1 个答案:

答案 0 :(得分:2)

Expo和标准的React Native项目模板的声明应用程序根组件的方式略有不同。

在标准的React Native项目中,您在index.android.js中使用AppRegistry:

AppRegistry.registerComponent('SimpleApp', () => SimpleApp);

在Expo中,框架会为您注册组件,您需要做的就是从Main.js导出组件:

export default SimpleApp;

以下是修改并粘贴到Expo Snack的代码示例:https://snack.expo.io/S1CZnFadZ