我正在制作一个简单的" 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 <
有人能告诉我我在哪里弄错了吗?
答案 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;
}
我希望这会有所帮助。