2016-04-15 16 views
0

Ich bin ein Neuling in React, also wird vielleicht jemand, der ein Experte ist, das Problem schnell erkennen. Das ist mein router.js:Uncaught TypeError: TodoList ist keine Funktion

define(["backbone", "react", "jsx!view/todoList"], function(Backbone, React, ReactDOM, TodoList) { 
    return Backbone.Router.extend({ 
    routes : { 
     "" : "index" 
    }, 
    index : function() { 
     console.log("hello world"); 

     var todos = new Backbone.Collection([ 
     { 
      text: 'Dishes!', 
      dueDate: new Date() 
     } 
     ]); 

     React.render(<TodoList todos={todos} />, document.body); 
    } 
    }); 
}); 

Ich erhalte den folgenden Fehler in der Konsole: VM7282:19 Uncaught TypeError: TodoList is not a function.

Möglicherweise ist das Problem mit veraltetem JSXTransformer (https://facebook.github.io/react/blog/2015/06/12/deprecating-jstransform-and-react-tools.html). Babel wird stattdessen empfohlen (in meinem Fall anstelle von jsx! View/todoList babel! View/todoList zu verwenden). Was ich als Problem damit habe, ist von wo man babel.js importiert. Hier http://facebook.github.io/react/docs/displaying-data.html importieren sie https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js aber wenn ich das gleiche babel mache! View/todoList funktioniert nicht.

Antwort

1

Dies könnte eher ein Backbone-Problem als React sein. Ich bin nicht vertraut mit Backbone, aber in Bezug auf React, ist dies in der Regel, weil Sie versuchen, eine Komponente zu verwenden, die nicht ordnungsgemäß importiert oder definiert wurde.

Zum Beispiel können versuchen, Sie zu tun:

React.render(<TodoList todos={todos} />, document.body); 

ohne richtig var TodoList = require('./TodoList')

importieren oder tatsächlich die Komponente zu schaffen.

var TodoList = React.createClass({ 
    render: function() { 
    // code code code code 
    } 
}) 

Ich glaube, dass ist wahrscheinlich das Problem: https://medium.com/react-tutorials/react-backbone-router-c00be0cf1592#.q4bsdqqgr

+0

TodoList in Zeile 1 von jsx Ansicht/Todolist importiert wird. JSX Plugin wird verwendet, um die Datei todoList.js im View-Ordner zu laden. Ich habe https://blog.mayflower.de/3937-Backbone-React.html als Referenz benutzt und trotzdem sehe ich nicht, warum es nicht richtig importiert wurde. – Danijela

+0

Möglicherweise ist das Problem mit veraltet JSXTransformer (https://facebook.github.io/react/blog/2015/06/12/deprecasting-jstransform-and-react-tools.html). Babel wird stattdessen empfohlen (in meinem Fall anstelle von jsx! View/todoList babel! View/todoList zu verwenden). Was ich als Problem damit habe, ist von wo man babel.js importiert. Hier http://facebook.github.io/react/docs/displaying-data.html importieren sie https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js aber wenn ich das gleiche babel mache! view/todoList funktioniert nicht. – Danijela

Verwandte Themen