2016-04-17 25 views
25

Tôi đang học các phản ứng thông qua một hướng dẫn và chạy vào lỗi này. Điều đó nói rằng "Không thể đọc các khóa thuộc tính" của không xác định "Mã của tôi là rất tối thiểu vì vậy tôi cho rằng nó phải làm với cấu trúc của ngôn ngữ. Có ai biết vấn đề và giải pháp có thể không?reactjs Không thể đọc các 'khóa' thuộc tính không xác định

<!DOCTYPE html> 

<html> 
<head> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.min.js"></script> 
    <title>ReactJs</title> 
</head> 
<body> 
    <div id="app"></div> 

    <script type="text/babel"> 
     var HelloWorld = ReactDOM.createClass({ 
     render: function() { 
     return 
     <div> 
      <h1>Hello World</h1> 
      <p>This is some text></p> 
     </div> 
     } 
     }); 
     ReactDOM.render(
     <HelloWorld />, document.getElementById('app')); 
    </script> 
</body> 
</html> 
+0

Bàn chân của bạn có hoạt động không? – JordanHendrix

+1

Tôi đã chèn tập lệnh của bạn vào ứng dụng và vẫn gặp lỗi tương tự. Nó khiến tôi nhận ra rằng khi nghi ngờ vấn đề này dường như là với phiên bản Babel mà tôi đang sử dụng. Tôi không chắc vấn đề là gì nhưng tôi sẽ thử sử dụng một phiên bản khác. – NVA

+0

lẻ, tôi chỉ cần kiểm tra đây là một trong tôi đang sử dụng: https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js – JordanHendrix

Trả lời

31

Edit: kỳ quặc, sau ý kiến ​​của chúng tôi ở trên, tôi đã kiểm tra để xem nếu nó đã thực sự là phiên bản babel lõi, Tôi đang sử dụng một trong fiddle tôi:

https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js

I thứ hai chuyển sang phiên bản của bạn ở trên tôi có được điều này:

Uncaught TypeError: Cannot read property 'keys' of undefined 

Sử dụng React.createClass không ReactDOM.createClass và quấn nhiều dòng html trong ngoặc đơn li ke vậy:

làm việc Ví dụ: https://jsfiddle.net/69z2wepo/38998/

var Hello = React.createClass({ 
    render: function() { 
    return (  
     <div> 
     <h1>Hello World</h1> 
     <p>This is some text</p> 
     </div> 
    ) 
    } 
}); 

ReactDOM.render(
    <Hello name="World" />, 
    document.getElementById('container') 
); 
+9

bất kỳ lý do gì khiến Babel phiên bản 6 đưa ra lỗi đó? Tôi đã có nó quá sau đó chuyển sang phiên bản 5.8.24 lỗi đã biến mất. –

+1

Tôi vừa gặp lỗi tương tự và nhận thấy rằng phiên bản Babel cho trình duyệt mà chúng tôi đang sử dụng không còn được dùng nữa. Phiên bản mới nhất bạn có thể sử dụng trong trình duyệt là https://cdnjs.com/libraries/babel-standalone – MattGoldwater

+0

Phiên bản babel phải nhỏ hơn 6.0.0 –

-3

Tôi chưa từng làm việc với Phản ứng trước, nhưng có một vài điều mà tôi thấy rằng có thể gây ra các vấn đề của bạn. Trước tiên, React.createClass thay vì ReactDOM.createClass. Thứ hai, bạn cần phải quấn html của bạn trong ngoặc đơn:

var HelloWorld = React.createClass({ 
    render: function() { 
    return (
     <div> 
     <h1>Hello World</h1> 
     <p>This is some text></p> 
     </div> 
    ); 
    } 
}); 

này nên làm cho nó hoạt

1

Hôm nay là ngày đầu tiên của tôi với Phản ứng, và tôi đã phải đối mặt với vấn đề này khi tôi cố gắng sử dụng Babel để transpile JSX!

Vấn đề là phiên bản bạn đang cố gắng sử dụng, hãy sử dụng cái này thay vì:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script> 

Đừng quên để viết type="text/babel" trong thẻ <script> mà bạn sẽ viết JSX trong để cho Babel transpile điều đó cho bạn, nếu bạn không, bạn sẽ tìm thấy lỗi này (như tôi đã phải đối mặt với nó quá: D):

Uncaught SyntaxError: Unexpected token <

0

Chỉ cần được rõ ràng, như answ khác ers là một chút phức tạp. Vấn đề đã được sử dụng "babel-core" thay vì "babel-standalone". Chỉ cần tìm một cdn cho babel-standalone để thay thế.

https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.js 
Các vấn đề liên quan