2016-01-08 14 views
25

nuovo a ES6, stavo cercando di fare un Reagire semplice componente funzionale come questonon può esportare la funzione freccia 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> 
    ) 

Ma

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

non ha dato la funzione freccia.

ma se lascio fuori "todo const =" parte nel link di esportazione, in questo modo

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

Essa viene importato con successo.

Perché è quello?

+0

Eventuali duplicati di [ES6 AssignmentExpression predefinito di esportazione] (http://stackoverflow.com/questions/24925628/es6-export-default-assignmentexpression) – Bergi

risposta

38

Si sta tentando di esportare un valore predefinito e dichiarare una variabile allo stesso tempo, che è una sintassi non valida.

Considerare quanto segue, poiché sappiamo che è possibile dichiarare più variabili utilizzando solo un'istanza della parola chiave, var a, b, c;, la definizione di esportazione non avrebbe alcun senso.

export default var a, b, c; 

Cosa significherebbe? Cosa verrebbe esportato?

Inoltre, l'utilizzo della sintassi export default crea già una variabile denominata default che deve contenere un valore o un riferimento.

Esportare invece la variabile se si desidera renderla una costante.

const Todo =() => {}; 

export default Todo; 

C'è un thread about this on ESDiscuss

+0

vedo, ma l'esportazione la classe Todo estende Component {...} non è considerata come dichiarazione di una variabile ma una classe che è valida, è corretta? –

+1

Sì, ma usare la parola chiave 'class' è solo zucchero sintattico E non è possibile dichiarare più di 1 classe nello stesso go comunque. 'classe A, B, C' è in sintassi valida. –

+0

Grazie mille, ha molto senso, la parte relativa a te può var/const cose multiple e l'esportazione non saprebbe su chi agire. –

Problemi correlati