解析错误:第9行:反应中出现意外的标识符

时间:2017-10-07 15:38:20

标签: javascript reactjs

这是什么错误,我只是按照新的波士顿教程,在这样做时我不知道为什么会出现这个错误

我现在编辑了代码,它仍然无法正常工作

代码:

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

1 个答案:

答案 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类声明中是禁止的。