React Uncaught TypeError:this.setState不是函数

时间:2016-01-17 14:24:55

标签: javascript reactjs

这是我的第一个React代码。我试图从React调用Restful Web服务。 它一直说“Uncaught TypeError:this.setState不是函数”。我无法弄清楚代码有什么问题。

<!DOCTYPE html>
<html>
    <head>
        <title>React Flux</title>
        <script src="https://fb.me/react-0.13.3.js"></script>
        <script src="https://fb.me/JSXTransformer-0.13.3.js"></script>
        <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    </head>
    <body>
        <div id="component"></div>

        <script type="text/jsx">

            var JavaEEWSTest = React.createClass({
                getInitialState: function () {
                    return {text: ''};
                },
                componentDidMount: function(){
                    $.ajax({
                        url: "http://localhost:8080/rest/user/456"
                    }).then(function(data) {
                        this.setState({text: data.name});
                    }).bind(this)
                },
                render: function() {
                    return <div>Response - {this.state.text}</div>;
                }
            });

            React.render(<JavaEEWSTest />, document.getElementById('component'));
        </script>
    </body>
</html>

1 个答案:

答案 0 :(得分:11)

您需要将this设置为回调函数

$.ajax({
  url: "http://localhost:8080/rest/user/456"
}).then(function(data) {
 this.setState({text: data.name});
}.bind(this))
^^^^^^^^^^^

但不适用于$.ajax/then - }).bind(this)