2016-06-07 17 views
7

Ho visto domande simili ma non riesco a identificare il problema. Sto usando react nativo v 0.27 Ho modificato tutti i miei metodi di richiesta in importazioni.React-native: l'espressione Super deve essere nullo o una funzione, non indefinita

Ecco l'errore che ricevo:

enter image description here

non so se rilevante, ma la prima posizione dei punti di errore per il mio file LoginComp.js che contiene il seguente codice:

/** 
* Sample React Native App 
* https://github.com/facebook/react-native 
*/ 
'use strict'; 
import React, { 
    AppRegistry, 
    Component, 
    StyleSheet, 
    Text, 
    View, 
    Image, 
    TextInput, 
    Button, 
    TouchableHighlight 
} from 'react-native'; 

class LoginComp extends Component { 
    constructor(){ 
    super(props); 
    } 
    render() { 
    return (
     <View style={{flex: 1}}> 
     <View style={this.props.styles.loginLogoContainer}> 
      <Image style={this.props.styles.view1logo} source={require('../imgs/Logo.png')} /> 
     </View> 
     <View style={this.props.styles.loginContainer}> 
      <Text>Użytkownik:</Text> 
      <TextInput 
      style={this.props.styles.defaultInput} 
      placeholder="Użytkownik" 
      stretch={true} 
      autoComplete={false} 
      autoCorrect={false} 
      /> 
      <Text>Hasło:</Text> 
      <TextInput 
      style={this.props.styles.defaultInput} 
      placeholder="Hasło" 
      stretch={true} 
      autoComplete={false} 
      autoCorrect={false} 
      secureTextEntry={true} 
      /> 
     <TouchableHighlight onPress={this.props.LoginPress}> 
      <Text style={this.props.styles.loginButton}>Login</Text> 
      </TouchableHighlight> 
     </View> 
     <View style={this.props.styles.registrationWrapper}> 
      <Text>- lub -</Text> 
      <TouchableHighlight onPress={this.props.t_Registration}> 
      <Text style={this.props.styles.registration}>Załóż nowe konto</Text> 
      </TouchableHighlight> 
     </View> 
     </View> 
    ); 
    } 
} 

module.exports = LoginComp; 

risposta

27

Cambia la tua dichiarazione di importazione come di seguito e prova.

import React, { Component } from 'react'; 

import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View, 
    Image, 
    TextInput, 
    Button, 
    TouchableHighlight, 
} from 'react-native'; 

Inoltre costruttore dovrebbe essere come sotto

constructor(props){ 
    super(props); 
} 
+0

grazie - ha risolto il mio problema. Ma perché deve essere così? –

+5

Nella versione più recente di react native, "React" e "Component" vengono spostati dal modulo "react-native" a "react". Quindi dovrai importarlo usando il modo sopra. – Jickson

+0

e che cosa è il contesto che passa al costruttore? –

1

Personnaly, Ho risolto questo problema in un altro modo:

ero importando un modulo default come import Module from "./path/to/Module.js".
Ma nel file Module.js, ho ommited la parola chiave predefinita:
export class Module {/*...*/}->export default class Module {/*...*/}

Spero che questo vi aiuterà qualcuno. =)