33 votes

reactjs Impossible de lire les «clés» de propriété d'undefined

J'apprends reactjs à travers un tutoriel et suis tombé sur cette erreur. Cela dit "Impossible de lire les 'clés' de propriété d'undefined" Mon code est très minimal, donc je suppose qu'il a à voir avec la structure du langage. Quelqu'un connaît-il le problème et une solution possible?

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

38voto

JordanHendrix Points 7878

Edit: bizarrement, d'après nos observations ci-dessus, j'ai vérifié pour voir si il était en effet le babel version core, je suis à l'aide de celui-ci à mon violon:

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

La deuxième j'ai passer votre version ci-dessus j'obtiens ceci:

Uncaught TypeError: Cannot read property 'keys' of undefined

Utiliser React.createClass pas ReactDOM.createClass et l'enrouler plusieurs lignes de html dans les parenthèses, comme ceci:

Exemple: 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')
);

10voto

VIBrunazo Points 384

Juste pour être clair, car les autres réponses sont un peu compliquées. Le problème était d'utiliser "babel-core" au lieu de "babel-standalone". Recherchez simplement un cdn pour babel-autonome à la place.

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

3voto

Elharony Points 303

Aujourd'hui est mon premier jour avec React, et j'ai rencontré ce problème lorsque j'ai essayé d'utiliser Babel pour transpiler le JSX!

Le problème est la version que vous essayez d'utiliser, veuillez utiliser celle-ci à la place:

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

N'oubliez pas d'écrire type="text/babel" dans la balise <script> laquelle vous écrirez le JSX pour laisser Babel le transpiler pour vous, si vous ne le faites pas, vous trouverez cette erreur ( Comme je l'ai fait face aussi!: D) :

Uncaught SyntaxError: Unexpected token <

-3voto

Alex R Points 533

Je n'ai jamais travaillé avec React auparavant, mais il y a certaines choses qui, selon moi, peuvent être à l'origine de vos problèmes. Tout d'abord, React.createClass au lieu de ReactDOM.createClass . Deuxièmement, vous devez mettre votre html entre parenthèses:

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

Cela devrait le faire fonctionner

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X