IPhone Expoでリアクションネイティブアプリを実行しようとすると、このエラーが赤い背景領域に表示されます。
不変違反:要素タイプが無効です:文字列(組み込みコンポーネントの場合)またはクラス/関数(複合コンポーネントの場合)が必要ですが、オブジェクト:が取得されました。定義されているファイルからコンポーネントをエクスポートするのを忘れている可能性があります。
これは「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.jsです。
import App from './src/components/App';
このコードの実行にはexpoアプリを使用しました。このエラーを解決するにはどうすればよいですか?
Expoは、/App.js
からコンポーネントをエクスポートすることを期待しています。ただし、現在は/App.js
にのみインポートしています。 Expoはレンダリングするコンポーネントを受け取りません。インポートしたコンポーネントを次のようにエクスポートする必要があります。
export default App;
注意:必要な場合にのみクラスコンポーネントを使用します。
私の場合、次のようにエクスポートする代わりに:
export default App;
...次のようにエクスポートしました:
export {LoginForm};
それは完全にうまくいきました。
デフォルトのエクスポートを指定せずに次のスタイルでエクスポートを実行すると、このエラーが発生しました。 1つのファイルから複数の小さなコンポーネントをエクスポートしていたため、デフォルトを指定しませんでした。
export const Modal = (props) => (
<div className="someClass">
</div>
)
Importステートメントに角かっこを追加することで、機能させることができました。
import {Modal} from '../components/Modal.js'
私は同じ問題があり、App.jsでexport default
の前にclass yourclassname extends Component
を置いた