一个简单的" Hello World"在React.js无法正常工作

时间:2016-01-12 07:34:45

标签: reactjs

我正在制作一个简单的" Hello World" React.js中的程序。我期待" Hello World"打印在html的正文中。

的index.html

<html>
<head>
<script src="http://fb.me/react-0.12.2.min.js"></script>
<script>
var HelloWorld = React.createClass({
    render: function() {
        return <div>Hello, world!</div>;
    }
});
React.render(new HelloWorld(), document.body);
</script>
</head>
<body> 
</body> 
</html>

错误:

Uncaught SyntaxError: Unexpected token <

有人能告诉我我在哪里弄错了吗?

3 个答案:

答案 0 :(得分:12)

Sol的答案涵盖了为什么简单的hello应用程序无法执行。最新的React.js截至2017年1月的最佳做法是导入

<script src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>

并将脚本类型设置为text/babel

有了这个,您可以正常执行JSX,例如

class Greeting extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      <p>Hello, Universe</p>
    );
  }
}

答案 1 :(得分:10)

你所缺少的是包含将JSX转换为JS的东西。您需要包含JSXTransformer.js。另请注意React.render不使用document.body,它应该是一个dom元素。这是一个应该有效的例子:

<!DOCTYPE html>
<html>
  <head>
    <title>My First React Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
  </head>
  <body>
    <div id="greeting-div"></div>
    <script type="text/jsx">
      var Greeting = React.createClass({
        render: function() {
          return (
            <p>Hello, Universe</p>
          )
        }
      });
      React.render(
        <Greeting/>,
        document.getElementById('greeting-div')
      );
    </script>
  </body>
</html>

答案 2 :(得分:1)

我只是想我会与大家分享我的解决方案。我想建立一个没有所有npm,节点guff的简单项目,就像OP我遇到问题一样,花了我三个小时才弄明白,下面是我的解决方案。

HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Boy</title>
    <link rel="stylesheet" type="text/css" href="css/app.css">
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.24.0/babel.js"></script>
    <script type ="text/babel" src="js/app.js"></script>
</head>
  <body>
    <div id="root">Loading...</div>

  </body>
</html>

关键是要包含来自React和Babel的相应脚本文件。我正在使用外部app.js文件,如果你想这样做,那么记得包括type =“text / babel”。

完成后,您可以从React执行hello world示例。我的app.js文件:

ReactDOM.render(
    <h1>Hello, world!</h1>,
    document.getElementById('root')
  );

CSS文件:

#root {
    color: skyblue;
}

我希望这会有所帮助。