2017-01-20 12 views
8

Zastanawiasz się nad reakcją na ES6 jako zalecany sposób pisania klas React. Zaczynam od prostego przykładu:Reaguj z problemami klasy Ecmascript6 przy użyciu Chrome

import React from 'react'; 
import ReactDOM from 'react-dom'; 

require('../node_modules/font-awesome/css/font-awesome.css'); 
require('../node_modules/bootstrap/dist/css/bootstrap.css'); 

require('jquery'); 
require('bootstrap'); 

import Dashboard from './components/Dashboard/Dashboard'; 

ReactDOM.render(
    <Dashboard/>, 
    document.getElementById('react-container') 
); 

A mój składnik ES6:

import React from 'react'; 


class Dashboard extends React.Component { 
    render() { 
    return <h1>Hello, Don Trump</h1> 
    } 
} 

Dostaję następujący błąd w Chrome 55:

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in. 
    at invariant (VM1093 bundle.js:9069) 
    at ReactCompositeComponentWrapper.instantiateReactComponent [as _instantiateReactComponent] (VM1093 bundle.js:23166) 
    at ReactCompositeComponentWrapper.performInitialMount (VM1093 bundle.js:23589) 
    at ReactCompositeComponentWrapper.mountComponent (VM1093 bundle.js:23480) 
    at Object.mountComponent (VM1093 bundle.js:16018) 
    at mountComponentIntoNode (VM1093 bundle.js:28717) 
    at ReactReconcileTransaction.perform (VM1093 bundle.js:17017) 
    at batchedMountComponentIntoNode (VM1093 bundle.js:28739) 
    at ReactDefaultBatchingStrategyTransaction.perform (VM1093 bundle.js:17017) 
    at Object.batchedUpdates (VM1093 bundle.js:26233) 

I myśli tam jest coś prostego, czego mi brakuje. Pomóż docenić.

+0

trzeba dodać „default EXPORT” za Dashboard Komponent –

Odpowiedz

15

Komunikat o błędzie może mieć rację: najprawdopodobniej

Zapomniałeś wyeksportować komponent z pliku jest zdefiniowana w

wyeksportować komponent Dashboard jak następuje:.

import React from 'react'; 

class Dashboard extends React.Component { 
    render() { 
    return <h1>Hello</h1> 
    } 
} 

export default Dashboard; 
+2

Huh !!! Bardzo podstawowe zaginięcie ... Dziękuję .... – Mendes

4

Dodaj

eksport domyślny Dashboard

Pod koniec swojej składnika; Tak więc nowy kod będzie

class Dashboard extends React.Component { 
    render() { 
    return <h1>Hello, Don Trump</h1> 
    } 
} 
export default Dashboard; 
1

trzeba wyeksportować klasy. Można rzeczywiście eksport i deklarują jednocześnie

import React from 'react'; 

export default class Dashboard extends React.Component { 
    render() { 
    return <h1>Hello</h1> 
    } 
} 
Powiązane problemy