这是什么错误,我只是按照新的波士顿教程,在这样做时我不知道为什么会出现这个错误
我现在编辑了代码,它仍然无法正常工作
代码:
<!Doctype html>
<html>
<head>
<title>React Practice</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
</head>
<body>
<script type="text/jsx">
class Basics extends React.Component {
constructor () {
super();
this.state = {checked: true}
}
render(this.state.checked) {
var msg;
if () {
msg = 'checked';
} else {
msg = 'unchecked';
}
return (
<div>
<input type="checkbox" />
<h2>Checkbox is {msg}</h2>
</div>
)
}
}
ReactDOM.render(<Basics />, document.getElementById('example'));
</script>
<div id="example"></div>
</body>
答案 0 :(得分:1)
对我来说很奇怪,我会写如下:
getInitialState() {
return {checked:true}
}
render() {
var msg;
if (this.state.checked) {
msg = 'checked';
} else {
msg = 'unchecked';
}
return (
<div>
<input type="checkbox" />
<h2>Checkbox is {msg}</h2>
</div>
)
}
}
你有空if()
,而render()
不应该使用任何参数,我不知道为什么你使用msg: checked
而不是msg = 'checked'
(也许是一些JS转换器我之前没有看到)。我还将初始状态移到构造函数:
constructor () {
super();
this.state = {checked: true}
}
并删除getInitialState()
方法。在外部构造函数中,您应始终使用setState()
方法。
并且,正如您在注释部分中指出的那样,您不应该在方法声明之后使用逗号,它在对象声明中是必需的,但在ES 6类声明中是禁止的。