2017-01-25 2 views
0

"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components but got: object. Check the render method of AppContainer.Elementtyp ist ungültig: eine Zeichenkette erwartet, aber bekam: Objekt

ich die Störung erhalte, die zunächst in einem Tutorial Video hier gezeigt wurde:

https://youtu.be/6zVGVHWklg8?t=6m1s

Die Datei korrekt „genannt wurde/app/containers/ApplicationTabs/index.ios.js "und der Dateiinhalt ist genau so wie im Tutorial gezeigt.

Allerdings, wo die App im Video arbeitete, sobald ApplicationTabs "verbunden" war, bekomme ich immer noch den obigen Fehler, nachdem ich das selbst gemacht habe.

Ich benutze eine neuere Version von vielen der react/react-native/redux Module. Ich bin mir nicht sicher, ob die Konvention, Dateien mit OS-spezifischen Namen zu verwenden, die Art und Weise beeinflussen würde, wie sie importiert werden müssen.

Unten ist meine package.json Abhängigkeit:

"dependencies": { 
    "react": "15.4.2", 
    "react-native": "0.40.0", 
    "react-redux": "^5.0.2", 
    "redux": "^3.6.0", 
    "redux-logger": "^2.7.4", 
    "redux-thunk": "^2.2.0" 
} 

Dies ist der Inhalt von "/app/containers/ApplicationTabs/index.ios.js":

import { View, TabBarIOS, TabBarItemIOS } from 'react-native'; 
import React, { Component } from 'react'; 
import { connect } from 'react-redux'; 

class ApplicationTabs extends Component { 
    render() { 
    return (<View />); 
    } 
} 

function mapStateToProps(state) { 
    return { }; 
} 

export default connect(mapStateToProps)(ApplicationTabs); 

Dies ist der Inhalt von "/app/containers/AppContainer.js":

import React, {Component} from 'react'; 
import {connect} from 'react-redux'; 
import {ActionCreators} from '../actions'; 
import {bindActionCreators} from 'redux'; 
import ApplicationTabs from './ApplicationTabs'; 

class AppContainer extends Component { 
    render() { 
    return (<ApplicationTabs { ...this.props } />) 
    } 
} 

function mapDispatchToProps(dispatch) { 
    return bindActionCreators(ActionCreators, dispatch); 
} 

export default connect(() => { return {} }, mapDispatchToProps)(AppContainer); 

Antwort

0

Bitte überprüfen Sie die reagieren-redux Tutorial: http://redux.js.org/docs/basics/UsageWithReact.html Vielleicht wird das helfen.

Der Container wird durch die Connect-Funktion dargestellt und Sie sagen ihm, welche Komponente er enthalten soll.

+0

Ich habe ‚null‘ versucht, aber noch kein Glück, machte es keinen Unterschied, und ich habe den gleichen Fehler: 'Exportstandard verbinden (null, mapDispatchToProps) (AppContainer);' ich den exakt gleichen Code gesetzt habe in "ApplicationTabs.js" jedoch im Verzeichnis "app/containers" und es hat gut funktioniert. Es scheint einige Probleme bei der Verwendung von "/app/containers/ApplicationTabs/index.ios.js" zu geben. –

+0

index.ios.js sollte nur verwendet werden, um die App im Stammverzeichnis zu initialisieren. Wenn Sie verschiedene Komponenten benötigen, können Sie diese als ApplicationTabsIOS.js oder ähnliches trennen. – skAstro

+0

Danke für die Hilfe, ich folgte nur dem Video-Tutorial. Und dann sah "Platform-spezifische Erweiterungen" in der React-Dokumentation auch so angenommen, dass dies eine legitime Methode war: https://facebook.github.io/react-native/docs/platform-specific-code.html I habe jetzt stattdessen eine Datei mit dem Namen ApplicationTabs.js verwendet und sie funktioniert ordnungsgemäß. –

Verwandte Themen