我正在关注React Beginner Tutorial,我正在尝试将其翻译成ES6.然而,当我改变了CommentBox一个ES6类它开始给我一个this.props.url是undefined错误(在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 是否提升对象属性(参见下面的用例)?
(环顾四周,我发现变量也被提升了——对象属性只是变量提升的一个特例吗?)
let obj = {};
$(".hey").each((i, obj) => {
$(obj).click(obj.hey);
});
obj.hey = () => {
$("#hey").html("Hey!");
};
Run Code Online (Sandbox Code Playgroud)