React-Native Invariant Violation:元素类型无效

IT技术 javascript android ios reactjs react-native
2021-05-07 11:42:55

当我要在 iPhone Expo 上运行 React Native 应用程序时,此错误显示在红色背景区域中。

不变违规:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象。您可能忘记从定义组件的文件中导出组件。

这是“src/components/”文件夹中的 App.js

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


export default class App extends Component {
  render() {
    return (
    	<View>
      		<Text>Hello</Text>
      	</View>
    );
  }
}

这是 react-native app 文件夹中的主要 App.js。

import App from './src/components/App';

我使用 expo 应用程序运行此代码。我该如何解决这个错误?

4个回答

Expo 期望您从/App.js. 但是现在您只是导入到/App.js. Expo 没有收到任何要渲染的组件。您需要像这样导出您导入的组件:

export default App;

旁注:仅在必须时才使用类组件。

在我的情况下,而不是像这样导出:

export default App;

...我导出如下:

export {LoginForm};

它工作得很好。

在没有指定默认导出的情况下以以下样式进行导出时,我遇到了这个错误。我没有指定默认值,因为我从一个文件中导出多个小组件。

export const  Modal  = (props) => (
    <div className="someClass">
    </div>        
  )

我能够通过在导入语句中添加括号来使其工作。

import {Modal} from '../components/Modal.js'

我有同样的问题,我 export default 之前 class yourclassname extends Component 放在 App.js 中