2016-04-17 20 views
25

Sto imparando reactjs attraverso un tutorial e ho riscontrato questo errore. Quello che dice "Impossibile leggere le chiavi di proprietà" di undefined "Il mio codice è molto minimale quindi presumo che abbia a che fare con la struttura del linguaggio. Qualcuno conosce il problema e una possibile soluzione?reactjs Impossibile leggere le 'chiavi' di proprietà non definite

<!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

I tuoi piedi hanno funzionato? – JordanHendrix

+1

Ho inserito il tuo script nella mia app e ho ancora lo stesso errore. Mi ha fatto capire che, come sospetto, il problema sembra essere nella versione di Babel che sto usando. Non sono sicuro di quale sia il problema ma proverò a utilizzare un'altra versione. – NVA

+0

dispari, ho appena controllato che questo è quello che sto usando: https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js – JordanHendrix

risposta

31

Edit: stranamente, dopo le nostre osservazioni di cui sopra, ho controllato per vedere se era davvero la versione nucleo babele, sto usando questo nel mio violino:

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

La seconda ho passare alla versione sopra ottengo questo:

Uncaught TypeError: Cannot read property 'keys' of undefined 

Usa React.createClass non ReactDOM.createClass e avvolgere più righe di html tra parentesi Li ke così:

di lavoro Esempio: 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

alcun motivo per cui Babel versione 6 ha dato quell'errore? L'ho avuto anch'io, quindi passare alla versione 5.8.24 errore è andato. –

+1

Ho appena avuto lo stesso errore e ho scoperto che la versione di Babel per il browser che stavamo usando era deprecata. La versione più recente che puoi utilizzare nel browser è https://cdnjs.com/libraries/babel-standalone – MattGoldwater

+0

La versione di babel deve essere inferiore alla 6.0.0 –

-3

Non ho lavorato con Reagire prima, ma ci sono alcune cose che vedo che possono causare i vostri problemi. Innanzitutto, React.createClass anziché ReactDOM.createClass. In secondo luogo, è necessario avvolgere il vostro html tra parentesi:

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

Questo dovrebbe farlo funzionare

1

Oggi è il mio primo giorno con Reagire, e ho affrontato questo problema quando ho cercato di usare Babel per transpile il JSX!

Il problema è la versione che si sta tentando di utilizzare, si prega di utilizzare questa invece:

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

Non dimenticate di scrivere type="text/babel" nel tag <script> che si scriverà il JSX in per lasciare Babel transpile per voi, se non lo fai, troverete questo errore (come ho affrontata troppo!: D):

Uncaught SyntaxError: Unexpected token <

0

tanto per essere chiari, come l'altro risp sono un po 'contorti. Il problema era usare "babel-core" invece di "babel-standalone". Cerca invece un cdn per babel-standalone.

https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.js