当我使用es6和jquery的ajax函数时,我得到this.setState() is not a function
错误。我尝试使用this.componentDidmount = this.componentDidmount.bind(this);
在构造函数中绑定它,但仍然无法正常工作。
任何人都可以帮助我吗?谢谢!
这是我的代码:
import React from 'react';
import $ from 'jquery';
class UserGist extends React.Component {
constructor(props) {
super(props);
this.state = {
userName: '',
lastGistUrl: ''
};
}
componentDidMount() {
this.serverRequest = $.get(this.props.source, function(result) {
let lastGist = result[0];
this.setState({
userName: lastGist.owner.login,
lastGistUrl: lastGist.html_url
});
});
}
componentWillUnmount() {
this.serverRequest.abort();
}
render() {
return(
<div>
{this.state.userName}'s last gist is
<a href={this.state.lastGistUrl}>here</a>.
</div>
)
}
}
export default UserGist;
答案 0 :(得分:1)
this
内的回调函数的componentDidMount()
上下文未设置。
您可以使用箭头功能执行此操作,如下所示:
this.serverRequest = $.get(this.props.source, (result) => {
let lastGist = result[0];
this.setState({
userName: lastGist.owner.login,
lastGistUrl: lastGist.html_url
});
})