ecmascript-6 - modules - module.exports javascript
no se puede exportar la funciĆ³n de flecha constante (1)
Como novedad en ES6, estaba intentando crear un componente funcional simple React como este
// ./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>
)
Pero
// Another file
import Todo from ''./Todos.jsx'';
console.log(Todo) // undefined
No cedió la función de flecha.
pero si dejo la parte "const todo =" en el enlace de exportación, como así
export default ({
todos,
onTodoClick,
}) => (...)
Se importa con éxito.
¿Porqué es eso?
Está intentando exportar un valor predeterminado y declarar una variable al mismo tiempo, lo que no es una sintaxis válida.
Considere lo siguiente, ya que sabemos que puede declarar múltiples variables usando solo una instancia de la palabra clave, var a, b, c;
La definición de exportación no tendría ningún sentido en absoluto.
export default var a, b, c;
¿Qué significaría eso? ¿Qué se exportaría?
Además, el uso de la sintaxis export default
ya crea una variable llamada default
que debe contener un valor o referencia.
Exporte la variable en su lugar si desea convertirla en una constante.
const Todo = () => {};
export default Todo;
Hay un hilo sobre esto en ESDiscuss