首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setState in $.get

setState in $.get
EN

Stack Overflow用户
提问于 2014-11-27 16:29:55
回答 2查看 3.2K关注 0票数 5

this.setState()$.get作用域中使用时,我会得到以下错误

未定义的TypeError:未定义不是函数

它在$.get作用域之外运行良好。

我怎么才能解决这个问题?

代码语言:javascript
复制
$.get(APIURL, function (data) {
   this.setState({resdata: "This is a new state"});
});

我不确定将jQuery AJAX替换为其他小型AJAX库的最佳实践是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-27 16:32:32

可以保存对外部this的引用。

代码语言:javascript
复制
var that = this;
$.get(APIURL, function (data) {
   that.setState({resdata: "This is a new state"});
});

或者使用$.proxy

代码语言:javascript
复制
$.get(APIURL, $.proxy(function (data) {
   this.setState({resdata: "This is a new state"});
}, this));

函数内部使用的this通常指的是jqXHR对象ref http://api.jquery.com/jquery.ajax/

票数 12
EN

Stack Overflow用户

发布于 2016-06-17 14:41:52

您也可以使用bind(此),如React文档中所示:

https://facebook.github.io/react/tips/initial-ajax.html

下面是代码片段:

代码语言:javascript
复制
componentDidMount: function() {
    this.serverRequest = $.get(this.props.source, function (result) {
      var lastGist = result[0];
      this.setState({
        username: lastGist.owner.login,
        lastGistUrl: lastGist.html_url
      });
    }.bind(this));
  },
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27175184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档