小编nat*_*ung的帖子

ES6 /用"ajax"反应"this"关键字以从服务器获取数据(教程)

我正在关注React Beginner Tutorial,我正在尝试将其翻译成ES6.然而,当我改变了CommentBox一个ES6类它开始给我一个this.props.urlundefined错误(在AJAX调用loadCommentsFromServer).我认为这与ES6如何绑定有关this,但是我对语言(也不是React)不太熟悉,所以我不确定.我查看了React 0.13发行说明并看到了这个:

React.createClass具有内置的魔术功能,可以this自动为您绑定所有方法.对于那些在其他类中不习惯此功能的JavaScript开发人员来说,这可能会有点混乱,或者当他们从React迁移到其他类时会让人感到困惑.

我不完全确定,但我认为这意味着我必须保存它的价值(如在let that = this和中.bind(that)),但同样this.props.url也是undefined- 我不知道下一步该去哪里.

这是我目前的代码:

class CommentBox extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      data: []
    };
  }
  loadCommentsFromServer() {
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      cache: false,
      success: function(data) {
        this.setState({
          data: data
        })
      }.bind(this)
    });
  }
  handleCommentSubmit(comment) {
    var comments = this.state.data;
    var newComments = comments.concat([comment]);
    this.setState({ …
Run Code Online (Sandbox Code Playgroud)

javascript class this ecmascript-6 reactjs

4
推荐指数
1
解决办法
3426
查看次数

Javascript 中对象属性是否被提升?

JavaScript 是否提升对象属性(参见下面的用例)?

(环顾四周,我发现变量也被提升了——对象属性只是变量提升的一个特例吗?)

let obj = {};

$(".hey").each((i, obj) => {
  $(obj).click(obj.hey);
});

obj.hey = () => {
  $("#hey").html("Hey!");
};
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
928
查看次数

标签 统计

javascript ×2

class ×1

ecmascript-6 ×1

reactjs ×1

this ×1