首页 文章

reactjs无法读取未定义的属性'keys'

提问于
浏览
29

我正在通过教程学习reactjs并遇到了这个错误 . 这说“无法读取未定义的属性'键'我的代码非常小,所以我认为它与语言的结构有关 . 有谁知道问题和可能的解决方案?

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

5 回答

  • 37

    编辑:奇怪的是,在我们上面的评论之后,我检查了它是否确实是babel核心版本,我在我的小提琴中使用这个:

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

    第二个我切换到你上面的版本,我得到这个:

    Uncaught TypeError: Cannot read property 'keys' of undefined
    

    使用 React.createClass 而不是 ReactDOM.createClass 并在括号中包含多行html,如下所示:

    工作示例: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')
    );
    
  • 5

    需要明确的是,其他答案有点令人费解 . 问题是使用“babel-core”而不是“babel-standalone” . 只需要查找一个用于babel-standalone的cdn .

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

    今天是我使用React的第一天,当我尝试使用Babel来转换JSX时,我遇到了这个问题!

    问题是您尝试使用的版本,请使用此版本:

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

    不要忘记在 <script> 标签中写入 type="text/babel" ,您将编写JSX以让Babel为您转换它,如果您不这样做,您会发现此错误(因为我也遇到过它!:D):

    Uncaught SyntaxError: Unexpected token <

  • -3
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.29/browser.js"></script>
    

    这是 babel-core 的版本,它没有给我错误,如下所示:

    如果要使用最新版本,可以使用 latest standalone version . (截至2018年11月22日)

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

    但是这给出了以下警告:

    "You are using the in-browser Babel transformer. Be sure to precompile your scripts for production - https://babeljs.io/docs/setup/"

    enter image description here

  • 0

    我以前没有和React合作过,但是我看到的一些事情可能会导致你的问题 . 首先, React.createClass 而不是 ReactDOM.createClass . 其次,您需要将html包装在括号中:

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

    这应该让它工作

相关问题