2016-03-16 14 views
7

Ostatnio odkryłem radość z bezpaństwowych komponentów. Na przykład, to czyni mnie bardzo szczęśliwy (i działa):Składnia funkcji strzałek w React stateless components

import { Component, PropTypes } from 'react'; 

export default function ClassroomsOverview(props, context) { 
    return (
    <div> 
     <p>{context.classrooms.data.length} Classrooms.</p> 
     <p>{context.classrooms.members.length} Students</p> 
    </div> 
); 
} 

ClassroomsOverview.contextTypes = { 
    classrooms: PropTypes.object 
} 

Byłbym jeszcze szczęśliwszy, gdybym mógł zrobić taką samą pracę podzespołów z E6 arrow function syntax, tak:

import { Component, PropTypes } from 'react'; 

const ClassroomsOverview = (props, context) => (
    <div> 
     <p>{context.classrooms.data.length} Classrooms.</p> 
     <p>{context.classrooms.members.length} Students</p> 
    </div> 
); 

ClassroomsOverview.contextTypes = { 
    classrooms: PropTypes.object 
} 

mam następnie this video, ale nie mogę uzyskać wersji składni strzałek do pracy.

Czy ktoś może wskazać, co robię źle?

+1

W drugim przykładzie (pożądane) nie eksportujesz funkcji stałej. –

+0

@NikosParaskevopoulos Próbowałem dodać 'export default' przed' const', ale dostaję błąd kompilatora. –

+1

"Domyślne ustawienie eksportu" to operator *, przyjmujący wyrażenie jako argument ([ref] (http://exploringjs.com/es6/ch_modules.html#_importing-and-exporting-in-detail)); więc możesz użyć 'domyślnego eksportu (rekwizyty, kontekst) => ....;'. W przeciwnym razie możesz wyeksportować const ClassroomsOverview = (rekwizyty, kontekst) => ....; ', ale jest to * nazwany * eksport, a nie domyślny. Zgadzam się z Bergi, użyj składni 'export default function'. –

Odpowiedz

6

Brakuje deklaracji export. Dodaj do tego modułu:

export {ClassroomsOverview as default} 

Chciałbym jednak zalecamy stosowanie składni export default z deklaracji funkcji.

+0

Dzięki, pomyślałem, że przegapiłem coś oczywistego. Jednakże jeśli dodaję 'export default' przed' const', otrzymuję błąd kompilatora. Być może nie rozumiem twojej sugestii. Czy mógłbyś bardziej konkretnie to zrobić? –

+2

'export default const X = ...;' * jest * błędem składni. To nie jest obsługiwane. Możesz zrobić "export default ...;" z samą wartością, ale nie z deklaracją "const". Zobacz także [ta odpowiedź] (http://stackoverflow.com/a/3410738/10/10552) – Bergi

+0

Moja rekomendacja dotyczy pierwszego, już działającego fragmentu bez funkcji strzałki. – Bergi

Powiązane problemy