javascript - React Uncaught TypeError : this. setState 不是函数

标签 javascript reactjs

这是我的第一个 React 代码。我正在尝试从 React 调用 Restful Web 服务。 它一直说“未捕获的类型错误: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>

最佳答案

你需要设置this为回调函数

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

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

关于javascript - React Uncaught TypeError : this. setState 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839406/

相关文章:

JavaScript - 跳转到 anchor

javascript - 防止双击 &lt;input type ="submit"/>

javascript - 加载失败 - 跨源请求是 - Angularjs 1.x - ngRoute

javascript - Action 不触发reducer

javascript - 在 TypeScript 中为 React SFC 函数声明分配类型

javascript - 子元活了。 ('click' ) 永远不会运行,而父 div 的 Click 总是运行

单步执行时 JavaScript 行为会发生变化

javascript - 普通函数和返回多个函数的函数之间的区别

javascript - 使用 React JS 的 OnChange 事件下拉

reactjs - DevTools v4 与此版本的 React 不兼容