2017-02-13 4 views
0

Verwenden von jsx/react und versuchen, eine Funktion aus einer anderen Datei zu importieren. Das ist mein jsx:Wie man Modul in jsx importiert?

import React from 'react'; 
import {sayHello} from './stuff' 

export class Arrow extends React.Component { 

    cb =() => { // the class property is initialized with an arrow function that binds this to the class 
console.log('testing=cb clicked') 
    } 

    render() { 
    console.log('testing=sayHello()',sayHello()) 
    return (
     <button onClick={ this.cb }>Click</button> 
    ); 
    } 
} 

Der Versuch, die sayHello zu importieren, die wie folgt aussieht:

const sayHello =() => 'say hello' 

export default sayHello 

Als ich die jsx laufen bekomme ich diesen Fehler:

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

Antwort

0

Zu allererst import {sayHello} from ... sollte import sayHello from ... sein. Zweitens, nur weil Sie diesen ersten Fehler gemacht haben, stellen Sie sicher, dass Sie Ihre Arrow Komponente unter Verwendung von import {Arrow} from ... anstelle von import Arrow from ... importieren, weil der erste funktioniert und der letztere Fehler erzeugt mehrere Fehler für mich, einschließlich der, den Sie erwähnen.

+0

Es hat funktioniert, aber warum muss ich {} mit Pfeil und nicht mit sayHello verwenden? –

+0

Mit 'export class Arrow ...' müssen Sie 'import {Arrow} ...' verwenden, während Sie bei 'export default class Arrow ...' 'import Arrow ...' verwenden müssen. Im ersten Fall kann es mehrere 'export ...' Anweisungen in einer Datei geben und daher muss Ihre import-Anweisung in der Lage sein, mehrere Variablen zu importieren, indem diese potentielle Liste von Variablen in geschweifte Klammern gesetzt wird. Mit 'export default ...' kann nur ein einziger Export von dieser Datei ausgeführt werden, und daher kann die import-Anweisung sicher behaupten, dass sie eine einzelne Variable importiert, d. H. 'Import myVariable ...'. –

+0

großartige erklärung danke –

Verwandte Themen