2016-01-08 24 views
25

nowy do ES6, starałem się zrobić React prosty składnik funkcjonalny taknie może eksportować funkcję strzałki const

// ./Todo.jsx 

    export default const Todo = ({ 
     todos, 
     onTodoClick, 
    }) => (
     <ul> 
     {todos.map((todo, i) => 
      <li key  = {i} 
       onClick = {() => onTodoClick(i) } 
       style = {{textDecoration: todo.completed ? 'line-through': 'none' }} 
       > 
      {todo.text} 
      </li> 
     )} 
     </ul> 
    ) 

Ale

// Another file 
import Todo from './Todos.jsx'; 
console.log(Todo) // undefined 

nie dały funkcję strzałki.

ale jeśli mogę zostawić off "todo const =" część w linku eksportowej, tak jak

export default ({ 
     todos, 
     onTodoClick, 
    }) => (...) 

Robi zaimportowany.

Dlaczego tak jest?

+0

Możliwy duplikat [ES6 domyślny eksport AssignmentExpression] (http://stackoverflow.com/questions/24925628/es6-export-default-assignmentexpression) – Bergi

Odpowiedz

38

Próbujesz wyeksportować wartość domyślną i zadeklarować zmienną w tym samym czasie, co jest nieprawidłową składnią.

Należy wziąć pod uwagę, ponieważ wiemy, że można zadeklarować wiele zmiennych za pomocą tylko jednej instancji słowa kluczowego, var a, b, c; definicja eksportu nie miałaby żadnego sensu.

Co by to oznaczało? Co zostanie wyeksportowane?

Ponadto, używając składni export default, utworzono już zmienną o nazwie default, która musi zawierać wartość lub odwołanie.

Wyeksportuj zmienną, jeśli chcesz, aby stała.

const Todo =() => {}; 

export default Todo; 

Jest thread about this on ESDiscuss

+0

widzę, ale eksport klasa Todo extends Komponent {...} nie jest uważany za deklarację zmiennej, ale klasa, która jest ważna, czy to prawda? –

+1

Tak, ale użycie słowa kluczowego "class" to tylko cukier syntaktyczny ORAZ nie można zadeklarować więcej niż jednej klasy w tym samym i tak. 'klasa A, B, C' ma poprawną składnię. –

+0

Dzięki milionowi, to ma wiele sensu, część o was może var/const wiele rzeczy, a eksport nie wiedział, na którym działać. –

Powiązane problemy